我正在开发embedded式OpenSUSE 12.3系统,让用户configuration(单个)NTP服务器地址。 我需要能够向用户反馈与指定服务器通信方面的情况。 服务器地址是否有效? NTP是否无法联系服务器? 它正在查询服务器? 或者,我们是完全同步的吗? (注意:一旦NTP认为它是同步的,那么我不在乎它是如何同步的。)
现在我写了一个bash脚本来parsingntpq -np
的输出:
"ntpq: read: Connection refused"
那么ntpd不会运行 "No association ID's returned"
则服务器地址无效 ".INIT."
那么ntpd还没有连接到服务器 "*"
开头的行,那么我们正在查询服务器 显然,这是一个后面的痛苦和高度依赖平台,我很想有一个更好的解决scheme。
据我所知,在一个内置的ntp源代码树中有一个libntpq.a,可以被外部应用程序使用,但是直到有一个正式的版本,那么这只是切换到一个新的平台依赖的味道。
有没有官方的方式来确定当前的NTP客户端的通信状态? 再次注意,只有一台服务器将被configuration。
ntpstat怎么样,对你有用吗? 以下是运行时命令的退出/返回值:
检出页面确认我的NTP正在工作
另一种选择是使用ntp-wait命令。 ntp-wait通常用于需要系统时间同步的启动脚本,然后再执行其他任务。 如果将详细选项传递给ntp-wait,则在同步失败时将打印出状态和/或错误。 您也可以在返回错误之前告诉ntp-wait等待同步的时间。
与ntpstat不同,ntp-wait是由ntp参考实现提供的,因此依赖它比预期ntpstat安装/可用更便于移植。