问题描述
如何可靠地检查Ubuntu计算机最后一次连接到互联网的时间是什么?
如果无法做到这一点,那么一种检查Ubuntu计算机上次连接到网络的时间的方法就足够了。
最佳方案
方法1
即使NetworkManager.conf允许记录日志,显然它仍然进入syslog。但是,kern.log也具有它。
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
方法2
我发现NetworkManager确实存储了最后的连接时间,并且以UNIX纪元时间格式(自1970年以来的秒数)在/var/lib/NetworkManager/timestamps
文件中进行了排序。我的例子如下:
$ cat /var/lib/NetworkManager/timestamps
[timestamps]
c562ac2d-8911-4273-b165-ed1495b28c9a=1432777079
46cfcdd9-d095-418f-acd6-0a7ca282bb9a=0
d81fb3d0-1717-42c0-903d-4622c2381597=1434895707
b0bdefe6-df88-49bb-83d8-154dd21d77d9=1433093286
显示最新条目
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awk将搜索最大的纪元时间(换句话说,最晚),并将日期转换为人类可读的格式。
我也怀疑该文件(/var/lib/NetworkManager/timestamps
)被“编辑连接”图形菜单使用来显示上次连接时间
问题是,如果您仍连接到访问点,则GUI方式将不显示now
,而是最后一次建立连接的时间
次佳方案
您可以检查文件/var/log/syslog
,它将显示您上次连接到网络的时间。
例
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
您可以运行grep命令以仅从日志中提取所需的内容
< /var/log/syslog grep DHCPREQUEST
第三种方案
在/var/log/syslog
中找到link connected
之后,检查CONNECTED_GLOBAL
/link connected/,/CONNECTED_GLOBAL/
% awk '/link connected/,/CONNECTED_GLOBAL/ {line=$0} END{print line}' /var/log/syslog
Jun 21 11:12:54 sturm NetworkManager[736]: <info> NetworkManager state is now CONNECTED_GLOBAL Jun 21 11:12:54
% awk '/link connected/,/CONNECTED_GLOBAL/ {month=$1;day=$2;time=$3} END{print month,day,time}' /var/log/syslog
Jun 21 11:12:54