Linux 如何确定NTP通信状态
我正在开发一个嵌入式OpenSUSE 12.3系统,它允许用户配置(单个)NTP服务器地址。我需要能够向用户提供有关如何与指定服务器通信的反馈。服务器地址有效吗?NTP是否无法联系服务器?是查询服务器吗?或者,我们是完全同步的吗?(注意:一旦NTP认为它是同步的,那么我不在乎它的同步程度。) 现在我已经编写了一个bash脚本来解析Linux 如何确定NTP通信状态,linux,bash,client,embedded-linux,ntp,Linux,Bash,Client,Embedded Linux,Ntp,我正在开发一个嵌入式OpenSUSE 12.3系统,它允许用户配置(单个)NTP服务器地址。我需要能够向用户提供有关如何与指定服务器通信的反馈。服务器地址有效吗?NTP是否无法联系服务器?是查询服务器吗?或者,我们是完全同步的吗?(注意:一旦NTP认为它是同步的,那么我不在乎它的同步程度。) 现在我已经编写了一个bash脚本来解析ntpq-np的输出: 如果输出包含“ntpq:读取:连接被拒绝”,则ntpd未运行 如果输出包含“未返回关联ID”,则服务器地址无效 如果输出包含“.INIT.”,
ntpq-np的输出:
- 如果输出包含“ntpq:读取:连接被拒绝”
,则ntpd未运行
“.INIT.”
,则ntpd尚未连接到服务器“*”
开头的行,则我们将查询服务器是否有官方方法确定NTP客户端的当前通信状态?请再次注意,将只配置一台服务器。ntpstat如何,对您有效吗?以下是命令运行时的退出/返回值:
- 退出状态0-时钟已同步李>
- 退出状态1-时钟不同步李>
- 退出状态2-如果时钟状态不确定,例如如果ntpd不可接触
查看页面另一个选项是使用ntp wait命令。ntp wait通常用于在执行其他任务之前需要同步系统时间的启动脚本中。如果您将verbose选项传递给ntp wait,它将打印出状态,如果同步失败,将显示错误。您还可以告诉ntp在返回错误之前等待同步的时间
与ntpstat不同,ntp wait由ntp参考实现提供,因此依赖它比期望安装/可用ntpstat更具可移植性 这可能是一个更全面/更集中的工具的基础,但目前它只是一个起点。也很难找到。不过,没有其他答案。。。您可能会认为这不是一个模糊的需求…我只是在我的系统上尝试了ntp等待,当“ntpq-np”清楚地显示它已与ntp服务器同步时,它会报告“ntp未同步”。我查看了ntp wait的源代码(它是Perl),它只是在解析
ntpq-c“rv 0 state”
的输出,但它做得不好(例如,该ntpq命令的当前输出是***服务器未知的请求变量,但ntp wait的代码正在检查请求变量未知
)。所以,我不知道这是怎么回事。