Tôi có một máy Ubuntu và một máy Debian.
Trên cả hai tôi muốn có thể xem giao diện mạng đã được kết nối trong bao lâu. (Nghĩa là, được kết nối với mạng nhận IP, v.v. Không phải trạng thái vật lý của dây cáp). Thời gian hoạt động tính bằng giây hoặc ngày + thời gian kể từ lần thay đổi cuối cùng hoặc bất cứ điều gì tương tự.
Đến bây giờ tôi đã viết một kịch bản nhỏ để thực hiện nhiệm vụ nhưng có vẻ như nên có một cách tổng quát hơn để kiểm tra điều này. Một chương trình hoặc một cái gì đó trong / Proc hoặc như vậy.
Kịch bản của tôi:
#!/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
(trong số những thứ khác), nó có thể đáng xem.
/etc/dhcp3/dhclient-enter-hooks.d/
cũng có thể là một lựa chọn. Nhưng tôi không tìm thấy đủ thông tin để nói chính xác nó hoạt động như thế nào.