Risposte:
Metodo 1
Anche se NetworkManager.conf consente la registrazione, sembra che vada comunque nel syslog. Tuttavia, ha anche kern.log.
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
Metodo 2
Ho scoperto che NetworkManager memorizza l'ora dell'ultima connessione, ed è ordinata in /var/lib/NetworkManager/timestamps
file, nel formato dell'ora unix (secondi dal 1970). Il mio si presenta così per esempio:
$ 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
Per mostrare l'ultima voce
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
Awk cercherà il tempo più grande dell'epoca (in altre parole più recente) e la data lo convertirà in forma leggibile dall'uomo.
Ho anche il sospetto che questo file ( /var/lib/NetworkManager/timestamps
) sia utilizzato dal menu grafico Modifica connessioni per visualizzare l'ultima volta della connessione
Il problema è che se sei ancora connesso a un punto di accesso, la modalità GUI continua a now
non mostrare , l'ora in cui è stata stabilita la connessione per ultima
man NetworkManager.conf
, il file è /etc/NetworkManager/NetworkManager.conf
; funzionerà solo dopo aver abilitato la registrazione nel demone, ma sfortunatamente devo verificarlo in seguito supponendo che la macchina non sia stata configurata per questo. Comunque +1 per la kern.log
soluzione e per la prima soluzione che potrebbe essere utile in altri casi
Puoi controllare il file /var/log/syslog
che verrà visualizzato l'ultima volta che ti sei connesso a una rete.
Esempio
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
È possibile eseguire un comando grep per estrarre solo ciò che è necessario dal registro
< /var/log/syslog grep DHCPREQUEST
< /var/apt/syslog grep DHCPREQUEST
o variazioni.
DHCPREQUEST
non è affidabile. Sono online dal pomeriggio e da quando ho ricevuto molte richieste DHCP.
Controllare CONNECTED_GLOBAL
dopo che abbiamo trovato 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
ce n'è bisogno nel primo, tuttavia nessuno di questi funziona, penso che sia dovuto al POSIX [[:space:]]
. Quale versione di awk
stai utilizzando?
sudo
rimosso. GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
%
;) Se c'è un output nella riga sottostante
%
. Tutto tranne questo è perfetto!
Se non trovi il modo "giusto" per farlo, puoi sempre fabbricare il tuo!
La seguente funzione bash ti dirà se sei online (su Internet) o no.
Dovresti solo scrivere uno script che lo chiama (in un ciclo e quindi si ferma) e registra l'ultima data e ora su un file (sovrascrittura, quindi ha solo l'ultimo valore).
Dovresti aggiungere codice al loop in modo che controlli non appena viene inizialmente chiamato e registra (quindi il tuo stato iniziale è impostato correttamente).
Dopodiché, accederai nuovamente solo quando lo stato diventa offline e quando diventa online dopo essere stato offline. È più facile codificare che spiegare. ;)
Ciò sarebbe limitato in termini di accuratezza da quanto tempo utilizzi un loop (sleep) nel loop (per evitare che sia un loop molto stretto che potrebbe consumare troppe risorse di sistema). Inoltre, sarebbe ignaro di tutto ciò che accade prima che venga avviato o quando non è in esecuzione.
Lo script stesso potrebbe essere avviato (come processo in background ( &
alla fine dell'invocazione), possibilmente con a nohup
per mantenerlo in esecuzione se termina il processo padre) quando l'utente accede eseguendolo dal file $ HOME / .profile, avviandolo con l'utilità di avvio automatico del desktop (KDE o Gnome), da un processo cron che controlla periodicamente per vedere se non è già in esecuzione, o anche da qualsiasi sistema di avvio che hai (init / systemd / ecc., se sai abbastanza da fare quella.)
Quando non riesci a trovare qualcosa del genere che fa esattamente quello che vuoi, spesso non è troppo difficile scrivere il tuo script per farlo ed eseguirlo come un demone in background.
È consigliabile eseguirlo da un normale account utente, se possibile, a meno che non lo si codifichi in un linguaggio robusto come C o Python, poiché gli script di shell in esecuzione con privilegi di root spesso comportano rischi per la sicurezza.
Questo approccio ha un altro problema. A volte un ping si interrompe dando un falso stato offline.
Ho uno script completo, offline_alert , che fa praticamente il contrario di quello che vuoi - mi avvisa quando vado offline - ma il codice potrebbe rivelarsi utile. Ha una migliore funzione offline che tenta di ridurre i falsi positivi dai timeout del 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
}
Un modo per controllare qualsiasi registro di servizio / demone che inoltra su Internet per funzionare. Ad esempio aggiornamenti NTP (Network Time Protocol).
Vedere dpkg -L ntpdate
per gli hook di stato della rete
Anche se ho controllato il suo registro per il desktop Ubuntu, il suo aggiornamento viene eseguito ogni volta che si collega la rete e continua a provare dopo un breve ritardo se l'ultimo aggiornamento fallisce. Si collega ntp.ubuntu.com
.
(Nota, ho aggiunto la prima colonna nell'output per i miei commenti)
$ 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
Confermo che è installato per impostazione predefinita per Ubuntu 14.04 LTS 64 bit edizioni desktop e server.
L'ho provato in VM, mostra solo il tempo in cui si connette o si riconnette (con Internet disponibile). Non quello che vuoi (l'ultima volta è stato collegato)
Nota, syslog è un registro di rotazione, se vuoi cercare tutti i registri anche quelli compressi vecchi, usa zgrep
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
è installato di default ma non ntpd
/ openntpd
daemon / service che viene fornito in pacchetti separati. Per verificare che cambi la data e l'ora in una sbagliata, disconnetti e riconnetti.
ntpdate
potrebbe essere usato cron
per aggiornare periodicamente il tempo, avrà gli stessi risultati dell'esecuzione di un servizio (ntpd / openntpd). Ma stai cercando una configurazione predefinita e nessun sintonizzazione aggiuntiva, giusto?