我正在编写一个脚本,该脚本需要知道NTP服务器是否可访问,否则,将显示一条错误消息。
我正在运行Ubuntu,我需要完成此任务而无需下载任何第三方库等。
我遇到了ntpq。我可以通过运行以下命令来获得所需的结果:
ntpq -p 8.8.8.8
我希望我可以使用退出代码来确定命令的状态,但不幸的是,ntpq似乎没有任何退出代码,因为它总是返回0。
有什么办法可以完成我想做的事情?
答案 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