Como saber o tempo atual da Internet a partir da linha de comando no Linux?
Por exemplo, com ntpqprograma?
Nota: não do relógio do computador ou do sistema operacional, mas da internet?
Nota: Não quero alterar ou sincronizar a hora. Apenas SAIBA.
Como saber o tempo atual da Internet a partir da linha de comando no Linux?
Por exemplo, com ntpqprograma?
Nota: não do relógio do computador ou do sistema operacional, mas da internet?
Nota: Não quero alterar ou sincronizar a hora. Apenas SAIBA.
Respostas:
Se você usar o bash, a seguinte linha fará o trabalho
$ cat </dev/tcp/time.nist.gov/13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
Ele aproveita os recursos de rede internos¹ do shell bash. Se você usa um shell POSIX ou qualquer outro shell, pode usar, por exemplo, netcat.
$ nc time.nist.gov 13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
Ambos os comandos consultam o servidor de timer na porta TCP 13 do Instituto Nacional de Padrões e Tecnologia e emitem os dados recebidos no stdout.
IT EDIT: Na página do manual Bash: O Bash lida com vários nomes de arquivos, especialmente quando eles são usados em redirecionamentos, conforme descrito na tabela a seguir:
/dev/tcp/host/port
Se host for um nome de host ou endereço da Internet válido e porta for um número de porta inteiro ounome de serviço, o bash tentará abrir uma conexão TCP no soquete correspondente.
/dev/udp/host/port
Se host for um nome de host ou endereço da Internet válido e porta for um número de porta inteiro ounome de serviço, o bash tentará abrir uma conexão UDP no soquete correspondente.
</dev/tcp/formato?
curl -G --data-urlencode "format=%D-%T\n" http://www.timeapi.org/cet/now?
Existem vários serviços NTP disponíveis por distribuição.
Se você deseja fazer uma sincronização de relógio única :
date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
Defina a hora do sistema para o hardware Relógio em tempo real
hwclock -r --utc
hwclock -w --utc
hwclock -r --utc
(Nota: isso funciona bem com o Google, porque eles têm servidores por toda parte)
Se você deseja apenas ver a que horas o servidor mais próximo do Google envia:
date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
O ntpdatecomando pode fazer isso com o -qsinalizador:
$ ntpdate -q 1.debian.pool.ntp.org
server 88.191.120.99, stratum 3, offset -0.015076, delay 0.06604
server 88.191.235.218, stratum 2, offset -0.000676, delay 0.06592
server 188.165.240.21, stratum 3, offset 0.001191, delay 0.07005
server 91.121.34.166, stratum 2, offset 0.000565, delay 0.06998
22 Aug 00:56:21 ntpdate[31373]: adjust time server 88.191.235.218 offset -0.000676 sec
De man ntpdate:
-q Query only - don't set the clock.
Você também pode obter o tempo pela Internet usando o HTTP usando HTP, disponível em muitos sistemas, pois htpdatenormalmente só tem precisão para o segundo mais próximo, ou pode obtê-lo usando o TLS, tlsdateque pode fornecer uma melhor precisão:
tlsdate -nV google.com
Além disso, como o ntpdate está sendo preterido, você pode usá- sntplo (ele é instalado por padrão no MacOS e faz parte das distribuições ntp) para obter a data com muito mais precisão:
sntp pool.ntp.org