Jawaban:
Metode 1
Meskipun NetworkManager.conf memungkinkan logging, itu tampaknya masih masuk ke syslog. Namun, kern.log juga memilikinya.
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
Metode 2
Saya telah menemukan bahwa NetworkManager menyimpan waktu koneksi terakhir, dan itu diurutkan dalam /var/lib/NetworkManager/timestamps
file, dalam format waktu unix zaman (detik sejak 1970). Tambang saya terlihat seperti ini misalnya:
$ 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
Untuk menampilkan entri terbaru
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awk akan mencari waktu terbesar (dengan kata lain terbaru), dan tanggal akan mengubahnya menjadi bentuk yang dapat dibaca manusia.
Saya menduga juga bahwa file ini ( /var/lib/NetworkManager/timestamps
) digunakan oleh menu Edit Edit Koneksi grafis untuk menampilkan waktu koneksi terakhir
Masalahnya adalah bahwa jika Anda masih terhubung ke titik akses, cara GUI terus now
tidak menunjukkan , waktu ketika koneksi dibuat terakhir
man NetworkManager.conf
, file tersebut /etc/NetworkManager/NetworkManager.conf
; ini hanya akan berfungsi setelah mengaktifkan logging di daemon, tetapi sayangnya saya perlu memeriksa ini setelahnya seandainya mesin belum dikonfigurasi untuk ini. Pokoknya +1 untuk kern.log
solusi dan untuk solusi pertama yang mungkin dapat membantu dalam kasus lain
Anda dapat memeriksa file /var/log/syslog
itu akan menampilkan terakhir kali Anda terhubung ke jaringan.
Contoh
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
Anda dapat menjalankan perintah grep untuk menarik hanya apa yang Anda butuhkan dari log
< /var/log/syslog grep DHCPREQUEST
< /var/apt/syslog grep DHCPREQUEST
atau variasi.
DHCPREQUEST
tidak bisa diandalkan. Saya online sejak sore dan karena saya punya banyak permintaan DHCP.
Periksa CONNECTED_GLOBAL
setelah kami temukan link connected
di/var/log/syslog
/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
sudo
yang pertama, namun tidak ada yang bekerja, saya pikir itu karena POSIXly [[:space:]]
. Versi apa awk
yang Anda jalankan?
sudo
dihapus. GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
%
;) Jika ada output di garis bawah
%
. Semua kecuali ini sempurna!
Jika Anda tidak menemukan cara "benar" untuk melakukan ini, Anda selalu dapat membuatnya sendiri!
Fungsi bash berikut akan memberi tahu Anda apakah Anda sedang online (ke Internet) atau tidak.
Anda hanya perlu menulis skrip yang memanggilnya (dalam satu lingkaran dan kemudian tidur) dan mencatat tanggal dan waktu terakhir ke file (menimpa, sehingga hanya memiliki nilai terbaru).
Anda harus menambahkan kode ke loop sehingga memeriksa segera setelah awalnya disebut dan log (jadi keadaan awal Anda diatur dengan benar).
Setelah itu, Anda hanya akan login lagi ketika negara pertama kali offline dan ketika pertama kali online setelah offline. Lebih mudah untuk kode daripada menjelaskan. ;)
Ini akan dibatasi dalam akurasi oleh berapa lama penundaan (tidur) yang Anda gunakan dalam loop (agar tidak menjadi loop yang sangat ketat yang mungkin menghabiskan terlalu banyak sumber daya sistem.) Ini juga tidak akan menyadari apa pun yang terjadi sebelum dimulai atau saat tidak berjalan.
Script itu sendiri dapat dimulai (sebagai pekerjaan latar belakang ( &
di akhir doa), mungkin dengan nohup
agar tetap berjalan jika proses induknya berakhir) ketika pengguna Anda login dengan menjalankannya dari file $ HOME / .profile Anda, memulainya dengan utilitas autostart desktop Anda (KDE atau Gnome), dari pekerjaan cron yang secara berkala memeriksa untuk melihat apakah itu belum berjalan, atau bahkan dari sistem startup apa pun yang Anda miliki (init / systemd / dll., jika Anda cukup tahu untuk melakukan bahwa.)
Ketika Anda tidak dapat menemukan sesuatu seperti ini yang melakukan persis apa yang Anda inginkan, seringkali tidak terlalu sulit untuk menulis skrip Anda sendiri untuk melakukannya dan menjalankannya seperti daemon di latar belakang.
Cara terbaik untuk menjalankannya dari akun pengguna biasa jika memungkinkan - kecuali jika Anda mengkodekannya dalam bahasa yang kuat seperti C atau Python - karena skrip shell yang berjalan dengan hak akses root sering menimbulkan risiko keamanan.
Pendekatan ini memiliki masalah lain. Terkadang ping akan habis memberikan status offline palsu.
Saya memiliki skrip lengkap, offline_alert , yang cukup banyak berlawanan dengan apa yang Anda inginkan - memberi tahu saya ketika saya luring - tetapi kode ini terbukti bermanfaat. Ini memiliki fungsi offline yang lebih baik yang mencoba untuk mengurangi kesalahan positif dari waktu tunggu ping.
function offline {
## Test if offline
## Returns 0 if online, 2 if offline
local RC
ping -c 1 google.com > /dev/null 2>&1
RC=$?
##echo "offline returning [${RC}]"
return $RC
}
Salah satu cara untuk memeriksa log layanan / daemon apa pun yang menyampaikan di Internet agar berfungsi. Misalnya pembaruan NTP (Network Time Protocol).
Lihat dpkg -L ntpdate
kait status jaringan
Seperti halnya saya telah memeriksa log untuk desktop Ubuntu, pembaruannya berjalan setiap kali jaringan menyala dan terus mencoba setelah penundaan singkat jika pembaruan terakhir gagal. Menghubungkan ntp.ubuntu.com
.
(Catatan, saya menambahkan kolom pertama di output untuk komentar saya)
$ grep -r ntpdate /var/log/syslog*
1st_trial Jul 14 00:35:56 user-VirtualBox ntpdate[774]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 00:35:56 user-VirtualBox ntpdate[774]: no servers can be used, exiting
2nd_trial Jul 14 03:38:57 user-VirtualBox ntpdate[2571]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 03:38:57 user-VirtualBox ntpdate[2571]: no servers can be used, exiting
3rd_trial Jul 14 03:46:09 user-VirtualBox ntpdate[2782]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 03:46:09 user-VirtualBox ntpdate[2782]: no servers can be used, exiting
4th_trial Jul 14 03:47:48 user-VirtualBox ntpdate[2917]: step time server 91.189.89.199 offset 3.458355 sec
1st_trial Jul 14 10:23:07 user-VirtualBox ntpdate[728]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 10:23:07 user-VirtualBox ntpdate[728]: no servers can be used, exiting
2nd_trial Jul 14 10:37:22 user-VirtualBox ntpdate[2099]: step time server 91.189.89.199 offset 2.021103 sec
dis-/re-con Jul 14 15:27:09 user-VirtualBox ntpdate[20174]: step time server 91.189.89.199 offset 1.677465 sec
1st_trial Jul 14 23:55:00 user-VirtualBox ntpdate[807]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 14 23:55:00 user-VirtualBox ntpdate[807]: no servers can be used, exiting
2nd_trial Jul 15 00:00:24 user-VirtualBox ntpdate[2041]: step time server 91.189.94.4 offset 1.619839 sec
1st_trial Jul 15 05:39:08 user-VirtualBox ntpdate[767]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 15 05:39:08 user-VirtualBox ntpdate[767]: no servers can be used, exiting
2nd_trial Jul 15 05:39:21 user-VirtualBox ntpdate[1088]: step time server 91.189.94.4 offset 2.897077 sec
1st_trial Jul 15 05:49:40 user-VirtualBox ntpdate[787]: Can't find host ntp.ubuntu.com: Name or service not known (-2)
Jul 15 05:49:40 user-VirtualBox ntpdate[787]: no servers can be used, exiting
2nd_trial Jul 15 05:49:50 user-VirtualBox ntpdate[1101]: adjust time server 91.189.94.4 offset 0.090520 sec
reconnect Jul 15 05:55:50 user-VirtualBox ntpdate[2251]: adjust time server 91.189.94.4 offset 0.261432 sec
reconnect Jul 15 06:04:53 user-VirtualBox ntpdate[2702]: step time server 91.189.94.4 offset 0.525658 sec
Saya mengkonfirmasi itu diinstal secara default untuk edisi desktop & server Ubuntu 14.04 LTS 64Bit.
Saya mencobanya di VM, itu hanya menunjukkan waktu menghubungkan atau menghubungkan kembali (dengan Internet tersedia). Bukan yang Anda inginkan (terakhir kali terhubung)
Catatan, syslog adalah log rotate, jika Anda ingin mencari semua log, bahkan yang lama, gunakan zgrep
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
diinstal secara default tetapi tidak ntpd
/ openntpd
daemon / layanan yang datang dalam paket terpisah. Untuk memeriksa bahwa perubahan waktu & tanggal Anda menjadi salah, putuskan lalu hubungkan kembali.
ntpdate
dapat digunakan cron
untuk memperbarui waktu secara berkala, ini akan memiliki hasil yang sama dengan menjalankan layanan (ntpd / openntpd). Tetapi Anda mencari konfigurasi default dan tidak ada penyempurnaan tambahan, bukan?