Как узнать текущее время из интернета из командной строки в Linux?
Например, с ntpq
программой?
Примечание: не с компьютера или операционной системы, а с интернета?
Примечание: я не хочу менять или синхронизировать время. Просто ЗНАЙ это.
Как узнать текущее время из интернета из командной строки в Linux?
Например, с ntpq
программой?
Примечание: не с компьютера или операционной системы, а с интернета?
Примечание: я не хочу менять или синхронизировать время. Просто ЗНАЙ это.
Ответы:
Если вы используете bash, следующая строка выполнит работу
$ cat </dev/tcp/time.nist.gov/13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
Он использует встроенные возможности сети оболочки bash. Если вы используете оболочку POSIX или любую другую оболочку, вы можете использовать, например, netcat.
$ nc time.nist.gov 13
56525 13-08-21 23:07:09 50 0 0 55.6 UTC(NIST) *
Обе команды запрашивают сервер таймера через порт TCP 13 Национального института стандартов и технологий и выводят полученные данные на стандартный вывод.
¹ EDIT: От страницы человека Bash: Bash обрабатывает несколько имен файлов , специально , когда они используются в перенаправлениях, как описаны в следующей таблице:
/dev/tcp/host/port
Если host является действительным именем хоста или интернет-адресом, а port является целочисленным номером порта или
именем службы, bash пытается открыть TCP-соединение с соответствующим сокетом.
/dev/udp/host/port
Если host является действительным именем хоста или интернет-адресом, а port является целочисленным номером порта или
именем службы, bash пытается открыть UDP-соединение с соответствующим сокетом.
</dev/tcp/
формат?
curl -G --data-urlencode "format=%D-%T\n" http://www.timeapi.org/cet/now?
Для каждого дистрибутива доступно несколько служб NTP .
Если вы хотите выполнить синхронизацию по времени :
date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
Установить системное время на аппаратные часы реального времени
hwclock -r --utc
hwclock -w --utc
hwclock -r --utc
(Примечание: это работает хорошо с Google, потому что у них есть серверы повсюду)
Если вы хотите просто посмотреть, во сколько отправляется ближайший сервер Google:
date -d "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
Команда ntpdate
может сделать это с -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
От man ntpdate
:
-q Query only - don't set the clock.
Вы также можете получить время через Интернет, используя HTTP, используя HTP, который доступен во многих системах, htpdate
который обычно имеет точность только с точностью до ближайшей секунды, или вы можете получить его, используя TLS, tlsdate
что может обеспечить более высокую точность:
tlsdate -nV google.com
Кроме того, поскольку ntpdate устарела, вы можете использовать sntp
его (он установлен по умолчанию на MacOS и входит в состав дистрибутивов ntp), чтобы получить дату гораздо точнее:
sntp pool.ntp.org