Mam maszynę Ubuntu i maszynę Debian.
W obu przypadkach chcę widzieć, jak długo podłączony jest interfejs sieciowy. (To znaczy, podłączony do sieci uzyskującej IP itp. Nie fizyczny stan kabla). Czas działania w sekundach lub data + czas od ostatniej zmiany lub coś podobnego.
Na razie napisałem mały skrypt do wykonania zadania, ale wydaje się, że powinien istnieć bardziej ogólny sposób na sprawdzenie tego. Program lub coś w / proc lub coś takiego.
Mój skrypt:
#!/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
źródło
źródło
ip monitor
(między innymi), może warto spojrzeć./etc/dhcp3/dhclient-enter-hooks.d/
może być również opcją. Ale nie znajduję wystarczających informacji, aby powiedzieć, jak to dokładnie działa.Odpowiedzi:
Jądro Linux nie śledzi czasu uruchomienia interfejsu.
Wewnątrz
struct net_device
nie ma pola, które zawierajiffies
wartość dla momentu uruchomienia interfejsu.Najlepszym, którym możesz zarządzać, jest metoda oparta na skryptach i dziennikach przestrzeni użytkownika.
źródło
Na moim komputerze
dhclient
jest ponownie uruchamiany przez NetworkManager po ponownym połączeniu z siecią. Może więc możesz użyć czasu rozpoczęciadhclient
procesu?źródło
Oto mój wariant (bardzo podobny do twojego):
1116 - sekund po dzierżawieniu IP.
źródło
To powinno zrobić, co chcesz, w kilka sekund:
Które wyjścia:
Teoria: Pobierz znacznik czasu
STARTTIME
, a następnie sprawdź ,INTERVAL
czy brama (przezip route show
) jest nadal uruchomiona, jeśli tak, odejmij bieżący znacznik czasu od oryginału i wydrukuj. Jeśli nie, wyjdź i wskaż, że host przerwał połączenie. Zobacz strony podręcznika, aby uzyskać wyjaśnienie każdej z opcji polecenia. Jeśli nie chcesz generować co sekundę, zwiększINTERVAL
.źródło