Como posso verificar com segurança qual é a última vez que uma máquina Ubuntu foi conectada à Internet?
Caso isso não seja possível, uma maneira de verificar a última vez que uma máquina Ubuntu foi conectada a uma rede seria boa o suficiente.
fonte
Como posso verificar com segurança qual é a última vez que uma máquina Ubuntu foi conectada à Internet?
Caso isso não seja possível, uma maneira de verificar a última vez que uma máquina Ubuntu foi conectada a uma rede seria boa o suficiente.
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 akern.log
solução e para a primeira solução que pode ser útil em outros casosVocê pode verificar o arquivo
/var/log/syslog
que será exibido na última vez em que você se conectou a uma rede.Exemplo
Você pode executar um comando grep para obter apenas o que precisa do log
fonte
< /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 encontrarmoslink connected
em/var/log/syslog
/link connected/,/CONNECTED_GLOBAL/
fonte
sudo
no primeiro, no entanto, nada disso está funcionando, acho que é por causa do POSIXly[[:space:]]
. Qual versãoawk
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 umnohup
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.
fonte
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 redeBem, 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)
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
fonte
ntpdate
é instalado por padrão, mas não ontpd
/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 usadocron
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?