J'ai une machine Ubuntu et une machine Debian.
Sur les deux, je veux pouvoir voir depuis combien de temps une interface réseau est connectée. (Autrement dit, connecté à un réseau obtenant une adresse IP, etc. Pas l'état physique d'un cabel). Disponibilité en secondes ou date + heure depuis le dernier changement ou quelque chose de similaire.
Pour l'instant, j'ai écrit un petit script pour faire la tâche, mais il semble qu'il devrait y avoir un moyen plus général de vérifier cela. Un programme ou quelque chose dans / proc ou autre.
Mon 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
linux
ubuntu
networking
debian
Stefan Lithén
la source
la source
ip monitor
(entre autres choses), cela pourrait valoir le coup d'oeil./etc/dhcp3/dhclient-enter-hooks.d/
pourrait également être une option. Mais je ne trouve pas suffisamment d'informations pour dire comment cela fonctionne exactement.Réponses:
Le noyau Linux ne suit pas l'heure de démarrage d'une interface.
Au sein
struct net_device
il n'y a pas de champ qui contient unejiffies
valeur quand une interface est lancée.Le mieux que vous puissiez gérer est une méthode déduite des scripts et des journaux de l'espace utilisateur.
la source
Sur ma machine
dhclient
est redémarré par NetworkManager lors de la reconnexion au réseau. Alors peut-être pouvez-vous utiliser l'heure de début dudhclient
processus?la source
Voici ma variante (très similaire à la vôtre):
1116 - secondes après la location de l'IP.
la source
Cela devrait faire ce que vous voulez, en quelques secondes:
Quelles sorties:
Théorie: Obtenez un horodatage
STARTTIME
, puis testez chaque foisINTERVAL
si la passerelle (viaip route show
) est toujours active, si c'est le cas, soustrayez l'horodatage actuel de l'original et imprimez. Sinon, quittez et indiquez que l'hôte a interrompu sa connexion. Voir les pages de manuel pour une explication de chacune des options de commande. Si vous ne voulez pas de sortie toutes les secondes, augmentezINTERVAL
.la source