Antworten:
Methode 1
Obwohl NetworkManager.conf die Protokollierung zulässt, wird dies anscheinend immer noch in syslog gespeichert. Kern.log hat es jedoch auch.
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
Methode 2
Ich habe festgestellt, dass NetworkManager die letzte Verbindungszeit speichert und sie in /var/lib/NetworkManager/timestamps
Dateien im Zeitformat der Unix-Epoche (Sekunden seit 1970) sortiert . Meins sieht zum Beispiel so aus:
$ 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
Den neuesten Eintrag anzeigen
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awk sucht nach der größten Epochenzeit (mit anderen Worten nach der neuesten) und das Datum konvertiert sie in eine für Menschen lesbare Form.
Ich vermute auch, dass diese Datei ( /var/lib/NetworkManager/timestamps
) vom grafischen Menü "Verbindungen bearbeiten" verwendet wird, um das letzte Mal der Verbindung anzuzeigen
Das Problem ist, dass, wenn Sie immer noch mit einem Access Point verbunden sind, die GUI-Methode nicht anzeigt, now
wann die Verbindung zuletzt hergestellt wurde
man NetworkManager.conf
, die Datei ist /etc/NetworkManager/NetworkManager.conf
; Dies funktioniert erst, nachdem die Anmeldung im Dämon aktiviert wurde. Leider muss ich dies anschließend überprüfen, sofern der Computer nicht dafür konfiguriert wurde. Wie auch immer +1 für die kern.log
Lösung und für die erste Lösung, die in anderen Fällen hilfreich sein könnte
Sie können die Datei überprüfen, die /var/log/syslog
angezeigt wird, wenn Sie das letzte Mal eine Verbindung zu einem Netzwerk hergestellt haben.
Beispiel
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
Sie können einen grep- Befehl ausführen , um nur das abzurufen , was Sie aus dem Protokoll benötigen
< /var/log/syslog grep DHCPREQUEST
< /var/apt/syslog grep DHCPREQUEST
oder Variationen vorschlagen .
DHCPREQUEST
ist nicht zuverlässig. Ich bin seit dem Nachmittag online und hatte viele DHCP-Anfragen.
Überprüfen Sie, CONNECTED_GLOBAL
nachdem wir gefunden haben , link connected
in/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
die erste, aber keine davon funktioniert, ich denke, es liegt an der POSIXly [[:space:]]
. Welche Version von awk
läufst du?
sudo
entfernt. GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
%
;) Wenn es eine Ausgabe in der Zeile unten gibt
%
. Alles außer das ist perfekt!
Wenn Sie nicht den "richtigen" Weg finden, können Sie immer Ihren eigenen herstellen!
Die folgende Bash-Funktion zeigt an, ob Sie online sind (im Internet) oder nicht.
Sie müssten lediglich ein Skript schreiben, das es aufruft (in einer Schleife und dann im Ruhezustand) und das letzte Datum und die letzte Uhrzeit in einer Datei aufzeichnet (überschreibt, sodass es nur den neuesten Wert hat).
Sie müssten der Schleife Code hinzufügen, damit diese beim ersten Aufruf überprüft und protokolliert wird (damit Ihr Anfangszustand korrekt festgelegt wird).
Danach würden Sie sich erst wieder anmelden, wenn der Status zum ersten Mal offline geschaltet wird und wenn er zum ersten Mal online geschaltet wird, nachdem er offline geschaltet wurde. Es ist einfacher zu programmieren als zu erklären. ;)
Die Genauigkeit wird dadurch eingeschränkt, wie lange Sie eine Verzögerung (Ruhezustand) in der Schleife verwenden (um zu verhindern, dass es sich um eine sehr enge Schleife handelt, die möglicherweise zu viele Systemressourcen verbraucht). Außerdem ist nicht bekannt, was passiert, bevor die Schleife gestartet wird oder wenn es nicht läuft.
Das Skript selbst kann ( &
am Ende des Aufrufs) als Hintergrundjob gestartet werden , möglicherweise mit einemnohup
, der ausgeführt wird, wenn der übergeordnete Prozess beendet wird), wenn sich Ihr Benutzer anmeldet, indem er es aus Ihrer $ HOME / .profile-Datei ausführt. Starten Sie es mit Ihrem Desktop-Autostart-Dienstprogramm (KDE oder Gnome), von einem Cron-Job aus, der regelmäßig prüft, ob es noch nicht ausgeführt wird, oder sogar von einem beliebigen Startsystem aus (init / systemd / etc.), wenn Sie über ausreichende Kenntnisse verfügen Das.)
Wenn Sie so etwas nicht finden können, das genau das tut, was Sie wollen, ist es oft nicht zu schwierig, ein eigenes Skript zu schreiben, um es wie einen Daemon im Hintergrund auszuführen.
Es ist am besten, es von einem normalen Benutzerkonto aus auszuführen, sofern Sie es nicht in einer robusten Sprache wie C oder Python codieren, da Shell-Skripte, die mit Root-Rechten ausgeführt werden, häufig Sicherheitsrisiken bergen.
Dieser Ansatz hat ein anderes Problem. Manchmal gibt ein Ping-Timeout einen falschen Offline-Status aus.
Ich habe ein vollständiges Skript, " offline_alert" , das so ziemlich das Gegenteil von dem tut, was Sie wollen - benachrichtigt mich, wenn ich offline gehe -, aber der Code kann sich als nützlich erweisen. Es hat eine bessere Offline-Funktion, mit der versucht wird, durch Ping-Zeitüberschreitungen verursachte Fehlalarme zu reduzieren.
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
}
Eine Möglichkeit zum Überprüfen von Dienst- / Dämonprotokollen, die über das Internet zur Arbeit weitergeleitet werden. Zum Beispiel NTP-Updates (Network Time Protocol).
Siehe dpkg -L ntpdate
Netzwerkstatus-Hooks
Nun, ich habe sein Protokoll auf Ubuntu-Desktop überprüft, sein Update wird ausgeführt, wenn das Netzwerk hochgefahren ist, und ich versuche es nach einer kurzen Verzögerung, wenn das letzte Update fehlschlägt. Es verbindet ntp.ubuntu.com
.
(Hinweis: Ich habe die erste Spalte in der Ausgabe für meine Kommentare hinzugefügt.)
$ 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
Ich bestätige, dass es standardmäßig für Ubuntu 14.04 LTS 64Bit Desktop- und Server-Editionen installiert ist.
Ich habe es in VM ausprobiert. Es wird nur angezeigt, wann eine Verbindung hergestellt oder eine erneute Verbindung hergestellt wird (mit verfügbarem Internet). Nicht das, was Sie wollen (das letzte Mal wurde verbunden)
Beachten Sie, dass syslog ein rotierendes Protokoll ist. Wenn Sie alle Protokolle durchsuchen möchten, auch alte, komprimierte, verwenden Sie zgrep
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
wird standardmäßig installiert, nicht jedoch ntpd
/ openntpd
daemon / service, das in separaten Paketen geliefert wird . Trennen Sie die Verbindung und stellen Sie sie wieder her, um zu überprüfen, ob Uhrzeit und Datum falsch eingestellt sind.
ntpdate
kann verwendet werden cron
, um die Zeit in regelmäßigen Abständen zu aktualisieren. Es führt zu denselben Ergebnissen wie ein Dienst (ntpd / openntpd). Aber Sie suchen nach einer Standardkonfiguration und keiner zusätzlichen Optimierung, oder?