web-dev-qa-db-fra.com

Comment connaître l'heure actuelle d'Internet à partir d'une ligne de commande sous Linux?

Comment connaître l'heure actuelle d'Internet à partir d'une ligne de commande sous Linux?

Par exemple, avec ntpq programme?

Remarque: pas de l'horloge de l'ordinateur ou du système d'exploitation, mais d'Internet?

Remarque: je ne veux pas changer ou synchroniser le temps. Il suffit de le savoir.

26
Dims

Si vous utilisez bash, la ligne suivante fera l'affaire

$ cat </dev/tcp/time.nist.gov/13

56525 13-08-21 23:07:09 50 0 0  55.6 UTC(NIST) *

Il exploite les capacités de réseau intégrées¹ de la bash Shell. Si vous utilisez un shell POSIX ou tout autre shell, vous pouvez utiliser par exemple netcat.

$ nc time.nist.gov 13

56525 13-08-21 23:07:09 50 0 0  55.6 UTC(NIST) *

Les deux commandes interrogent le serveur de minuterie sur TCP port 13 de l'Institut national de la normalisation et de la technologie et produisent les données reçues sur stdout.

¹ EDIT: Depuis la page de manuel Bash: Bash gère plusieurs noms de fichiers spécialement lorsqu'ils sont utilisés dans des redirections, comme décrit dans le tableau suivant:

/dev/tcp/Host/port
Si Host est un nom d’hôte ou une adresse Internet valide et que port est un nombre entier de ports ou un nom de service, bash tente d’ouvrir une connexion TCP au socket correspondant.

/dev/udp/Host/port
Si Host est un nom d’hôte ou une adresse Internet valide et que port est un nombre entier de ports ou un nom de service, bash tente d’ouvrir une connexion UDP au socket correspondant.

28
Marco

Il existe plusieurs services NTP disponibles par distribution.

Si vous souhaitez effectuer un one time clocksync :

date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"

définit l'heure système sur l'horloge temps réel matérielle

hwclock -r --utc
hwclock -w --utc
hwclock -r --utc

(Remarque: cela s’avère bien fonctionner avec Google, car ils sont entièrement séparés)


Si vous souhaitez simplement voir à quelle heure le serveur le plus proche de Google envoie:

date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
22
justbrowsing

La commande ntpdate peut le faire avec l'indicateur -q:

$ 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.
17
terdon

Vous pouvez également obtenir le temps sur Internet en utilisant HTTP en utilisant HTP , qui est disponible sur de nombreux systèmes sous la forme htpdate qui n’a habituellement que la précision la plus proche. en second lieu, ou vous pouvez l’obtenir en utilisant TLS en utilisant tlsdate qui peut fournir une meilleure précision:

tlsdate -nV google.com

De plus, étant donné que ntpdate est obsolète, vous pouvez utiliser sntp (il est installé par défaut sur MacOS et fait partie des distributions ntp) pour obtenir la date beaucoup plus. avec précision:

sntp pool.ntp.org 
0
Pierz