Saya memiliki mesin Ubuntu dan mesin Debian.
Pada keduanya saya ingin dapat melihat berapa lama antarmuka jaringan telah terhubung. (Yaitu, terhubung ke jaringan yang mendapatkan IP dll. Bukan keadaan fisik dari cabel). Waktu aktif dalam detik atau tanggal + waktu sejak perubahan terakhir atau yang serupa.
Sampai sekarang saya telah menulis skrip kecil untuk melakukan tugas tetapi tampaknya harus ada cara yang lebih umum untuk memeriksa ini. Suatu program atau sesuatu di / proc atau semacamnya.
Skrip saya:
#!/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
sumber
sumber
ip monitor
(antara lain), mungkin layak untuk dilihat./etc/dhcp3/dhclient-enter-hooks.d/
juga bisa menjadi pilihan. Tetapi saya tidak menemukan cukup informasi untuk mengatakan bagaimana tepatnya itu bekerja.Jawaban:
Kernel Linux tidak melacak waktu antarmuka dimulai.
Di dalam
struct net_device
tidak ada bidang yang memegangjiffies
nilai ketika antarmuka dimulai.Yang terbaik yang dapat Anda kelola adalah beberapa metode yang disimpulkan dari skrip dan log userspace.
sumber
Di mesin saya
dhclient
dihidupkan ulang oleh NetworkManager ketika menghubungkan kembali ke jaringan. Jadi mungkin Anda bisa menggunakan waktu mulaidhclient
proses?sumber
Ini varian saya (sangat mirip dengan Anda):
1116 - detik setelah IP disewa.
sumber
Ini akan melakukan apa yang Anda inginkan, dalam hitungan detik:
Output yang mana:
Teori: Dapatkan cap waktu
STARTTIME
, lalu uji setiapINTERVAL
apakah gateway (melaluiip route show
) masih naik, jika demikian, kurangi cap waktu saat ini dari yang asli dan cetak. Jika tidak, keluar dan tunjukkan bahwa host telah menjatuhkan koneksinya. Lihat halaman manual untuk penjelasan masing-masing opsi perintah. Jika Anda tidak ingin output setiap detik, naikkanINTERVAL
.sumber