Respostas:
Método 1
Embora o NetworkManager.conf permita o log, isso aparentemente ainda entra no syslog. No entanto, o kern.log também possui.
grep 'associated' /var/log/kern.log | tail -n1
Jun 21 17:08:25 anaconda kernel: [ 4910.819781] wlan1: associated
Método 2
Descobri que o NetworkManager armazena o último horário da conexão e é classificado em /var/lib/NetworkManager/timestamps
arquivo, no formato de horário da época unix (segundos desde 1970). O meu se parece com isso, por exemplo:
$ 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
Para mostrar a entrada mais recente
date --date=@"$( awk -F'=' 'BEGIN {var=0}{if(var<$2) var=$2;} END{print var}' /var/lib/NetworkManager/timestamps )"
O Awk procurará o maior período de época (em outras palavras, mais recente) e a data o converterá em formato legível por humanos.
Suspeito também que este arquivo ( /var/lib/NetworkManager/timestamps
) seja usado pelo menu gráfico Editar conexões para exibir a última vez que a conexão
O problema é que, se você ainda estiver conectado a um ponto de acesso, a GUI continuará mostrando que now
não, a hora em que a conexão foi estabelecida pela última vez
man NetworkManager.conf
, o arquivo é /etc/NetworkManager/NetworkManager.conf
; isso funcionará somente depois de ativar o logon no daemon, mas infelizmente preciso verificar isso posteriormente, supondo que a máquina não tenha sido configurada para isso. Enfim +1 para a kern.log
solução e para a primeira solução que pode ser útil em outros casos
Você pode verificar o arquivo /var/log/syslog
que será exibido na última vez em que você se conectou a uma rede.
Exemplo
Jun 21 08:00:00 Ubuntu dhclient: DHCPREQUEST of 192.0.0.0 on wlan0 to 192.0.0.0 port 67 (xid=0xec7c6e7)
Você pode executar um comando grep para obter apenas o que precisa do log
< /var/log/syslog grep DHCPREQUEST
< /var/apt/syslog grep DHCPREQUEST
variações.
DHCPREQUEST
não é confiável. Estou online desde a tarde e desde que recebi muitas solicitações de DHCP.
Verifique CONNECTED_GLOBAL
depois de encontrarmos link connected
em/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
no primeiro, no entanto, nada disso está funcionando, acho que é por causa do POSIXly [[:space:]]
. Qual versão awk
você está executando?
sudo
removido. GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p11, GNU MP 6.0.0)
%
;) Se houver uma saída na linha abaixo
%
. Tudo, mas isso é perfeito!
Se você não encontrar o caminho "certo" para fazer isso, sempre poderá fabricar o seu!
A função bash a seguir informa se você está online (na Internet) ou não.
Você apenas teria que escrever um script que o chamasse (em loop e depois inseja) e registre a última data e hora em um arquivo (sobrescrevendo, para que ele tenha apenas o valor mais recente).
Você precisaria adicionar código ao loop para que ele verifique assim que for chamado inicialmente e faça logon (para que seu estado inicial seja definido corretamente).
Depois disso, você só registraria novamente quando o estado ficar offline primeiro e quando ficar online depois de ficar offline. É mais fácil codificar do que explicar. ;)
Isso teria precisão limitada por quanto tempo um atraso (inatividade) você usa no loop (para impedir que ele seja um loop muito apertado que pode consumir muitos recursos do sistema.) Também não teria conhecimento do que acontece antes de ser iniciado ou quando não estiver em execução.
O script em si pode ser iniciado (como um trabalho em segundo plano ( &
no final da invocação), possivelmente com um nohup
para mantê-lo em execução se o processo pai terminar) quando o usuário fizer login executando-o no seu arquivo $ HOME / .profile, iniciando-o com o utilitário de inicialização automática da área de trabalho (KDE ou Gnome), a partir de um trabalho cron que verifica periodicamente se já não está em execução ou mesmo de qualquer sistema de inicialização que você tenha (init / systemd / etc., se você souber o suficiente para fazer) aquele.)
Quando você não consegue encontrar algo assim que faça exatamente o que deseja, geralmente não é muito difícil escrever seu próprio script para executá-lo e executá-lo como um daemon em segundo plano.
É melhor executá-lo a partir de uma conta de usuário comum, se possível - a menos que você o codifique em uma linguagem robusta como C ou Python - porque os scripts de shell executados com privilégios de root geralmente representam riscos à segurança.
Essa abordagem tem outro problema. Às vezes, o ping atinge o tempo limite, fornecendo a você um status offline falso.
Eu tenho um script completo, offline_alert , que praticamente faz o oposto do que você deseja - me alerta quando estou offline - mas o código pode ser útil. Possui uma função offline melhor que tenta reduzir falsos positivos de tempos limite de 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
}
Uma maneira de verificar qualquer log de serviço / daemon que retransmitir na Internet para funcionar. Por exemplo, atualizações de NTP (Network Time Protocol).
Veja dpkg -L ntpdate
para ganchos de estado de rede
Bem, como verifiquei seu log para o desktop Ubuntu, sua atualização é executada sempre que a rede é ligada e continuamos tentando após um pequeno atraso, se a última atualização falhar. Ele se conecta ntp.ubuntu.com
.
(Observe, eu adicionei a primeira coluna na saída para meus comentários)
$ 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
Confirmo que ele está instalado por padrão nas edições de desktop e servidor Ubuntu 14.04 LTS 64Bit.
Eu tentei na VM, mostra apenas o tempo em que ele se conecta ou se reconecta (com a Internet disponível). Não é o que você deseja (a última vez que foi conectada)
Observe que syslog é um log de rotação, se você deseja pesquisar todos os logs, mesmo os antigos compactados, use zgrep
zgrep -ih ntpdate /var/log/syslog* | sort -bn -k2
ntpdate
é instalado por padrão, mas não o ntpd
/ openntpd
daemon / service que vem em pacotes separados. Para verificar se a hora e a data estão incorretas, desconecte e reconecte.
ntpdate
pode ser usado cron
para atualizar o tempo periodicamente, ele terá os mesmos resultados que a execução de um serviço (ntpd / openntpd). Mas você está procurando uma configuração padrão e sem ajustes adicionais, certo?