检索NTP服务器状态

时间:2019-01-21 15:54:27

标签: bash shell ntp

我正在编写一个脚本,该脚本需要知道NTP服务器是否可访问,否则,将显示一条错误消息。

我正在运行Ubuntu,我需要完成此任务而无需下载任何第三方库等。

我遇到了ntpq。我可以通过运行以下命令来获得所需的结果:

ntpq -p 8.8.8.8

我希望我可以使用退出代码来确定命令的状态,但不幸的是,ntpq似乎没有任何退出代码,因为它总是返回0。

有什么办法可以完成我想做的事情?

1 个答案:

答案 0 :(得分:2)

根据Ubuntu documentation for 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