Eu tenho uma máquina Ubuntu e uma máquina Debian.
Nos dois, quero poder ver por quanto tempo uma interface de rede está conectada. (Ou seja, conectado a uma rede recebendo um IP, etc. Não é o estado físico de um cabel). Tempo de atividade em segundos ou data e hora desde a última alteração ou algo semelhante.
Até agora, escrevi um pequeno script para executar a tarefa, mas parece que deve haver uma maneira mais geral de verificar isso. Um programa ou algo em / proc ou algo parecido.
Meu script:
#!/bin/bash
if [ -f /etc/os-release ]; then
if TMP=$(grep -i 'ubuntu' /etc/os-release); then
# we are on ubuntu
for i in $(/bin/ls -1 /var/log/syslog* | sort -r); do
TMP=$(zgrep '(eth0): device state change: ip-config -> activated' "$i" | tail -1 | sed "s/ "$(hostname)"/*/")
done
WHEN=$(echo "$TMP" | cut -f1 -d '*')
SEC=$(echo "$(date +%s) - $(date -d "$WHEN" +%s)" | bc)
echo "Last link up: $WHEN ($SEC seconds ago)."
elif TMP=$(grep -i 'debian' /etc/os-release); then
# we are on debian
TMP=$(grep 'eth0: link up' /var/log/syslog* | tail -1 | cut -f2- -d':' | sed "s/ "$(uname -n)" kernel:/*/")
WHEN=$(echo "$TMP" | cut -f1 -d '*')
SEC=$(echo "$(date +%s) - $(date -d "$WHEN" +%s)" | bc)
echo "Last link up: $WHEN ($SEC seconds ago)."
fi
else
echo "File /etc/os-release not found."
fi
ip monitor
(entre outras coisas), pode valer a pena dar uma olhada.
/etc/dhcp3/dhclient-enter-hooks.d/
também possa ser uma opção. Mas não estou encontrando informações suficientes para dizer exatamente como isso funciona.