it-swarm.com.de

Wie kann man die aktuelle Zeit aus dem Internet über die Befehlszeile in Linux ermitteln?

Wie kann man die aktuelle Zeit aus dem Internet über die Befehlszeile in Linux ermitteln?

Zum Beispiel mit ntpq program?

Hinweis: Nicht von Computer oder Betriebssystemuhr, sondern vom Internet?

Hinweis: Ich möchte weder die Zeit ÄNDERN noch die SYNC-Zeit ändern. WISSEN Sie es einfach.

26
Dims

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 Netzwerkfunktionen¹ der Bash-Shell. Wenn Sie eine POSIX-Shell oder eine andere Shell verwenden, können Sie z. netcat.

$ nc time.nist.gov 13

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

Beide Befehle fragen den Timer-Server an TCP Port 13 des Nationalen Instituts für Standards und Technologie ab und geben die empfangenen Daten auf stdout aus.

¹ EDIT: Von der 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 und Port eine ganzzahlige Portnummer oder ein gültiger Dienstname ist, versucht die Bash, eine TCP Verbindung zum entsprechenden Socket herzustellen.

/dev/udp/Host/port
Wenn Host ein gültiger Hostname oder eine gültige Internetadresse und Port eine ganzzahlige Portnummer oder ein gültiger Dienstname ist, versucht die Bash, eine UDP-Verbindung zum entsprechenden Socket herzustellen.

28
Marco

Pro Distribution stehen mehrere NTP-Dienste zur Verfügung.

Wenn Sie eine einmalige Zeitsynchronisation durchführen möchten :

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

Systemzeit auf Hardware-Echtzeituhr einstellen

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

(Hinweis: Dies funktioniert gut mit Google, da es überall Server gibt.)


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')"
22
justbrowsing

Der Befehl ntpdate 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.
17
terdon

Sie können die Zeit auch über das Internet über HTTP abrufen, indem Sie HTP verwenden, das auf vielen Systemen als htpdate verfügbar ist und normalerweise nur die Genauigkeit auf den nächsten Wert hat zweitens, oder Sie können es mit TLS erhalten, indem Sie tlsdate verwenden, um eine bessere Genauigkeit zu erzielen:

tlsdate -nV google.com

Da ntpdate veraltet ist, können Sie auch sntp verwenden (standardmäßig unter MacOS installiert und als Teil der ntp-Distributionen erhältlich), um das Datum zu erhalten genau:

sntp pool.ntp.org 
0
Pierz