Jak poznać aktualny czas z Internetu z wiersza poleceń w systemie Linux?
Na przykład z ntpq
programem?
Uwaga: nie z zegara komputera lub systemu operacyjnego, ale z Internetu?
Uwaga: nie chcę ZMIENIAĆ ani synchronizować czasu. POZNAJ to.
Jak poznać aktualny czas z Internetu z wiersza poleceń w systemie Linux?
Na przykład z ntpq
programem?
Uwaga: nie z zegara komputera lub systemu operacyjnego, ale z Internetu?
Uwaga: nie chcę ZMIENIAĆ ani synchronizować czasu. POZNAJ to.
Odpowiedzi:
Jeśli użyjesz bash, następujący wiersz wykona zadanie
$ cat </dev/tcp/time.nist.gov/13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
Wykorzystuje wbudowane możliwości sieciowe¹ powłoki bash. Jeśli używasz powłoki POSIX lub innej powłoki, możesz użyć np . Netcat.
$ nc time.nist.gov 13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
Oba polecenia odpytują serwer timera na porcie TCP 13 Narodowego Instytutu Standardów i Technologii i wysyłają otrzymane dane na standardowe wyjście.
¹ EDYCJA: Ze strony podręcznika użytkownika Bash: Bash obsługuje wiele nazw plików, szczególnie gdy są one używane w przekierowaniach, jak opisano w poniższej tabeli:
/dev/tcp/host/port
Jeśli host jest poprawną nazwą hosta lub adresem internetowym, a port jest liczbą całkowitą lub
nazwą usługi, bash próbuje otworzyć połączenie TCP z odpowiednim gniazdem.
/dev/udp/host/port
Jeśli host jest prawidłową nazwą hosta lub adresem internetowym, a port jest liczbą całkowitą lub
nazwą usługi, bash próbuje otworzyć połączenie UDP z odpowiednim gniazdem.
</dev/tcp/
format
curl -G --data-urlencode "format=%D-%T\n" http://www.timeapi.org/cet/now?
Istnieje kilka usług NTP dostępnych dla każdej dystrybucji.
Jeśli chcesz zrobić synchronizację czasową :
date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
Ustaw czas systemowy na sprzętowy zegar czasu rzeczywistego
hwclock -r --utc
hwclock -w --utc
hwclock -r --utc
(Uwaga: tak się dzieje, że działa dobrze z Google, ponieważ mają one wszystkie serwery)
Jeśli chcesz zobaczyć, o której godzinie najbliższy serwer Google wysyła:
date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
ntpdate
Komenda może to zrobić z -q
flagą:
$ 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
Od man ntpdate
:
-q Query only - don't set the clock.
Możesz również uzyskać czas przez Internet za pomocą protokołu HTTP za pomocą protokołu HTP, który jest dostępny w wielu systemach, ponieważ htpdate
zwykle ma dokładność z dokładnością do najbliższej sekundy, lub możesz go uzyskać za pomocą protokołu TLS, tlsdate
który może zapewnić lepszą dokładność:
tlsdate -nV google.com
Ponieważ ntpdate jest przestarzałe, możesz go użyć sntp
(jest on instalowany domyślnie na MacOS i wchodzi w skład dystrybucji ntp), aby uzyskać dokładniejszą datę:
sntp pool.ntp.org