Yanıtlar:
Yöntem 1
NetworkManager.conf günlüğe kaydetmeye izin verse de, bu görünüşte hala syslog'a giriyor. Ancak, kern.log da vardır.
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
Yöntem 2
NetworkManager'ın son bağlantı zamanını /var/lib/NetworkManager/timestamps
kaydettiğini ve unix çağ zaman biçiminde (1970'den beri saniye) dosyada sıralandığını buldum . Mesela mayın buna benziyor:
$ 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
En son girişi göstermek için
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awk, en büyük çağ zamanını arayacaktır (en son başka deyişle) ve tarih onu insan tarafından okunabilir forma dönüştürecektir.
Ayrıca, bu dosyanın ( /var/lib/NetworkManager/timestamps
) Bağlantıları Düzenle grafik menüsü tarafından son bağlantı süresini görüntülemek için kullanıldığından da şüpheleniyorum .
Sorun şu ki, hala bir erişim noktasına bağlıysanız, GUI yolunun now
bağlantının en son kurulduğu zamanı göstermediğini gösterir.
man NetworkManager.conf
, dosya /etc/NetworkManager/NetworkManager.conf
; bu, sadece arka planda oturum açmayı etkinleştirdikten sonra çalışacak, ancak ne yazık ki, makinenin bunun için yapılandırılmadığını varsayarak bunu kontrol etmem gerekiyor. Yine de kern.log
çözüm için ve diğer durumlarda yardımcı olabilecek ilk çözüm için +1
/var/log/syslog
Bir ağa en son bağlandığınızda dosyayı gösterip göstermediğini kontrol edebilirsiniz .
Örnek
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
Günlükten yalnızca ihtiyacınız olanı almak için bir grep komutu çalıştırabilirsiniz.
< /var/log/syslog grep DHCPREQUEST
< /var/apt/syslog grep DHCPREQUEST
.
DHCPREQUEST
güvenilir değil. Öğleden sonra çevrimiçi olduğum ve bir çok DHCP isteğim olduğu için çevrimiçi olduğumdan.
Kontrol CONNECTED_GLOBAL
bulduk sonra link connected
içinde/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
İlki için gerek yok, ama bunların hiçbiri çalışmıyor, POSIXly yüzünden olduğunu düşünüyorum [[:space:]]
. Hangi sürümünü kullanıyorsunuz awk
?
sudo
kaldırıldı. GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
%
;) Aşağıdaki satırda bir çıktı varsa
%
. Hepsi ama bu mükemmel!
Bunu yapmanın "doğru" yolunu bulamazsanız, daima kendinizinkini üretebilirsiniz!
Aşağıdaki bash işlevi, çevrimiçi olup olmadığınızı (Internet'te) olup olmadığını size söyleyecektir.
Sadece onu (döngü içinde ve sonra uyuyan) çağıran bir komut dosyası yazmanız ve bir dosyaya son tarih ve saati kaydetmeniz gerekir (üzerine yazma, sadece en yeni değere sahip olacaktır).
Döngüye kod eklemeniz gerekir, böylece başlangıçta çağrılır başlatılmaz denetler ve kaydeder (ilk durumunuz doğru ayarlanır).
Bundan sonra, yalnızca durum ilk önce çevrimdışı olduğunda ve ilk kez çevrimdışı olduktan sonra çevrimiçi olduğunda tekrar giriş yaparsınız. Kodlamak açıklamaktan daha kolay. ;)
Bu, döngüde ne kadar gecikme (uyku) kullandığınızla (çok fazla sistem kaynağı tüketebilecek çok sıkı bir döngü olmasını engellemek için) kesin olarak sınırlı olacaktır.) Başlamadan önce ne olduğunun farkında bile olmaz. veya çalışmadığı zaman.
Komut dosyasının kendisi (arka plan işi olarak ( &
çağrının sonunda), muhtemelen a nohup
işlemi sona erdiğinde çalışır durumda tutmak için) bir kullanıcıyla $ HOME / .profile dosyanızdan çalıştırarak oturum açtığında başlatılabilir. Masaüstü otomatik başlatma yardımcı programınızla (KDE veya Gnome), zaten çalışıp çalışmadığını, hatta sahip olduğunuz başlangıç sisteminden (init / systemd / etc. söyledi.)
Tam olarak istediğinizi yapan böyle bir şey bulamıyorsanız, bunu yapmak için kendi senaryonuzu yazmak ve arka planda bir cini gibi çalıştırmak pek de zor değildir.
Mümkünse normal bir kullanıcı hesabından çalıştırmak en iyisidir - C veya Python gibi sağlam bir dilde kodlamadığınız sürece - çünkü kök ayrıcalıklarıyla çalışan kabuk komut dosyaları genellikle güvenlik riski oluşturur.
Bu yaklaşımın başka bir sorunu var. Bazen bir ping, zaman zaman yanlış bir çevrimdışı durum göstermesini sağlar.
Tam bir betiğim var, offline_alert , istediğinin tam tersini yapan şey - çevrimdışı olduğumda beni uyarıyor - ancak kod yararlı olabilir. Yanlış pozitifleri ping zaman aşımından azaltmaya çalışan daha iyi bir çevrimdışı işlevi vardır.
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
}
İnternette çalışmasını sağlayan herhangi bir servis / arka plan günlüğünü kontrol etmenin bir yolu Örneğin NTP (Ağ Saati Protokolü) güncellemeleri.
dpkg -L ntpdate
Ağ durumu kancaları için bkz .
Günlüğünü Ubuntu masaüstü için kontrol ettiğimde, güncelleme ne zaman ağ kurarsa çalışır ve son güncelleme başarısız olursa kısa bir gecikmeden sonra denemeye devam eder. Bağlanır ntp.ubuntu.com
.
(Not, yorumlarımın çıktısına ilk sütunu ekledim)
$ 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
Ubuntu 14.04 LTS 64Bit masaüstü ve sunucu sürümleri için varsayılan olarak kurulu olduğunu onaylıyorum.
VM'de bir deneme yaptım, yalnızca bağlandığı veya yeniden bağlandığı zamanları gösteriyor (İnternet kullanılabilir durumdayken). İstediğin gibi değil (geçen sefer bağlandı)
Unutmayın, syslog bir döndürme günlüğüdür, eskiden sıkıştırılmış olanları bile günlüklerin tümünü aramak istiyorsanız, zgrep
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
varsayılan olarak kurulur ama ayrı paketlerde gelen ntpd
/ openntpd
daemon / service değil . Saat ve tarihinizi yanlış olana çevirip değiştirmediğinizi kontrol etmek için bağlantıyı kesin ve tekrar bağlayın.
ntpdate
için kullanılabilir, cron
hizmet işletmekle (ntpd / openntpd) aynı sonuçları alır. Ancak, varsayılan konfigürasyon arıyorsunuz ve ek bir ayar yok, değil mi?