Ich habe eine Ubuntu-Maschine und eine Debian-Maschine.
Auf beiden möchte ich sehen können, wie lange eine Netzwerkschnittstelle verbunden ist. (Das heißt, mit einem Netzwerk verbunden, das eine IP usw. erhält. Nicht der physische Zustand eines Kabels). Betriebszeit in Sekunden oder Datum + Uhrzeit seit der letzten Änderung oder Ähnlichem.
Bis jetzt habe ich ein kleines Skript geschrieben, um die Aufgabe zu erledigen, aber es scheint, dass es einen allgemeineren Weg geben sollte, dies zu überprüfen. Ein Programm oder etwas in / proc oder so.
Mein Skript:
#!/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
quelle
quelle
ip monitor
(unter anderem) zu verwenden, es könnte einen Blick wert sein./etc/dhcp3/dhclient-enter-hooks.d/
könnte auch das Einfügen eines Skripts eine Option sein. Aber ich finde nicht genug Informationen, um zu sagen, wie genau es funktioniert.Antworten:
Der Linux-Kernel verfolgt nicht den Zeitpunkt, zu dem eine Schnittstelle gestartet wird.
Innerhalb
struct net_device
gibt es kein Feld, das einenjiffies
Wert für den Start einer Schnittstelle enthält.Das Beste, was Sie verwalten können, ist eine aus Userspace-Skripten und -Protokollen abgeleitete Methode.
quelle
Auf meinem Computer
dhclient
wird NetworkManager beim erneuten Herstellen einer Verbindung zum Netzwerk neu gestartet. Vielleicht können Sie die Startzeit desdhclient
Prozesses verwenden?quelle
Hier ist meine Variante (sehr ähnlich zu deiner):
1116 - Sekunden nach dem Leasing von IP.
quelle
Dies sollte in Sekundenschnelle tun, was Sie wollen:
Welche Ausgänge:
Theorie: Holen Sie sich einen Zeitstempel
STARTTIME
und testen Sie dann,INTERVAL
ob das Gateway (viaip route show
) noch aktiv ist. Wenn ja, subtrahieren Sie den aktuellen Zeitstempel vom Original und drucken Sie ihn aus. Wenn nicht, beenden Sie und geben Sie an, dass der Host seine Verbindung getrennt hat. In den Manpages finden Sie Erläuterungen zu den einzelnen Befehlsoptionen. Wenn Sie nicht jede Sekunde eine Ausgabe wünschen, erhöhen Sie dieseINTERVAL
.quelle