Получить статус NTP-сервера - PullRequest
0 голосов
/ 21 января 2019

Я пишу сценарий, и сценарий должен знать, доступен ли NTP-сервер, в противном случае будет напечатано сообщение об ошибке.

Я использую Ubuntu, и мне нужно выполнить эту задачу, не загружая библиотеки третьих компонентов и т. Д.

Я наткнулся на NTCP. Я получаю желаемый результат, выполнив следующую команду:

ntpq -p 8.8.8.8

Я надеялся, что смогу использовать код выхода для определения статуса команды, но, к сожалению, похоже, что ntpq не имеет никаких кодов выхода, поскольку он всегда возвращает 0.

Есть ли способ выполнить то, что я пытаюсь сделать?

1 Ответ

0 голосов
/ 21 января 2019

Согласно документации Ubuntu для ntpq

Будет возвращено одно из следующих значений выхода:

0 (EXIT_SUCCESS)
   Successful program execution.

1 (EXIT_FAILURE)
   The operation failed or the command syntax was not valid.

Однако ntpq предназначен для управления серверами NTP, которыми вы управляете. Лучшим вариантом для проверки доступности других серверов NTP является использование ntpdate с опцией -q для

Только запрос - не устанавливайте часы.

Примеры:

$ ntpdate -q example.org
server 93.184.216.34, stratum 0, offset 0.000000, delay 0.00000
21 Jan 17:53:00 ntpdate[11652]: no server suitable for synchronization found

$ echo $?
1

$ ntpdate -q 0.ubuntu.pool.ntp.wrong
Error resolving 0.ubuntu.pool.ntp.wrong: Name or service not known (-2)
21 Jan 17:52:11 ntpdate[11650]: Can't find host 0.ubuntu.pool.ntp.wrong: Name or service not known (-2)
21 Jan 17:52:11 ntpdate[11650]: no servers can be used, exiting

$ echo $?
1


$ ntpdate -q 0.ubuntu.pool.ntp.org
server 46.4.99.122, stratum 2, offset 0.000625, delay 0.02603
server 62.138.205.79, stratum 2, offset 0.002026, delay 0.03394
server 94.130.184.193, stratum 2, offset -0.000003, delay 0.02867
server 193.30.120.245, stratum 2, offset 0.000738, delay 0.03133
21 Jan 17:52:01 ntpdate[11649]: adjust time server 46.4.99.122 offset 0.000625 sec

$ echo $?
0
...