Wie aktuelle Zeit aus dem Internet von der Kommandozeile in Linux wissen?

Wie kann man die aktuelle Uhrzeit aus dem Internet über die Befehlszeile unter Linux ermitteln?

Zum Beispiel mit ntpq Programm?

Hinweis: nicht von computer oder betriebssystem uhr, aber von internet?

Hinweis: Ich möchte die Zeit nicht ÄNDERN oder SYNCHRONISIEREN. Nur WISSEN es.

Author: Dims, 2013-08-21

4 answers

Wenn Sie bash verwenden, erledigt die folgende Zeile den Job

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

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

Es nutzt die integrierten Netzwerkfähigkeiten1 der Bash-Shell. Wenn Sie eine POSIX-Shell oder eine andere Shell verwenden, können Sie z. B. netcat.

$ nc time.nist.gov 13

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

Beide Befehle abfragen den Timer-Server auf TCP-Port 13 des [[19]}National Institute of Standards and Technology und geben die empfangenen Daten auf stdout.

1BEARBEITEN: Von die Bash-Manpage: Bash behandelt mehrere dateinamen, insbesondere wenn sie in Umleitungen verwendet werden, wie in der folgenden Tabelle beschrieben:

/dev/tcp/host/port
Wenn host ein gültiger Hostname oder eine gültige Internetadresse ist und port eine ganzzahlige Portnummer ist oder dienstname, bash versucht, eine TCP-Verbindung zum entsprechenden Socket zu öffnen.

/dev/udp/host/port
Wenn host ein gültiger Hostname oder eine gültige Internetadresse ist und port eine ganzzahlige Portnummer ist oder dienstname, bash versucht zu öffnen eine UDP-Verbindung zum entsprechenden Socket.

 33
Author: Marco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-08-22 00:58:43

Pro Distribution sind mehrere NTP-Dienste verfügbar.

Wenn Sie möchten zu tun eine einem die Zeit clocksync:

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

Stellen Sie die Systemzeit auf Hardware-Echtzeituhr ein

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

(Hinweis: Dies funktioniert gut mit Google, da sie überall Severs haben)


Wenn Sie nur sehen möchten, wann der nächste Server von Google sendet:

date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
 23
Author: justbrowsing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-08-21 22:45:14

Der ntpdate der Befehl kann dies mit dem Flag -q tun:

$ 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

Von man ntpdate:

   -q     Query only - don't set the clock.
 20
Author: terdon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-08-22 11:19:59

Sie können die Zeit auch über das Internet entweder über HTTP mit HTP abrufen, das auf vielen Systemen als htpdate verfügbar ist und normalerweise nur die Genauigkeit auf die nächste Sekunde hat, oder Sie können es mithilfe von TLS erhalten tlsdate was eine bessere Genauigkeit bieten kann:

tlsdate -nV google.com

Auch da ntpdate veraltet ist, können Sie verwenden sntp (es ist standardmäßig auf macOS installiert und kommt als Teil der NTP-Distributionen), um das Datum viel mehr zu erhalten genau:

sntp pool.ntp.org 
 0
Author: Pierz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-02-08 14:37:47