如何使用Shell检查NTPD是否成功更新了机器时间?

看到

我正在尝试使用NTPD将我的Linux计算机的时间更新为指定的NTP服务器。
这是场景:

每次Linux计算机启动时,我想从NTP服务器更新时间,如果不成功,我想每5分钟重试一次直到成功(最多2个小时)。

我四处搜索,发现我应该使用NTPD并使用一些命令,例如:

#ntpdate ntp.server.com (在启动NTPD之前)
#ntpd some_options_to_start

问题是:

  1. 我怎么知道这些命令是否成功更新了时间?
  2. 我可以设置从ntpd更新时间的间隔吗?(或者我必须使用类似的东西sleep在外壳中使用do.. while/循环for?)

请注意,我想在Shell脚本中执行上述命令,并将Shell放入Web服务器。然后,客户端(使用Web浏览器浏览器)将在网站上执行脚本。因此,我需要检查更新是否成功或是否将结果发送到客户端(通过网络)。

比尔·索尔

ntpd通常不使用脚本来监视通常使用监视工具(例如nagiosmunin)来监视守护程序。发生问题时,该工具可以向您发送警报。munin如果偏移量超过15毫秒,我会通过电子邮件发送给我。

通常,您应该使用奇数个服务器,以便守护进程可以在服务器关闭时在服务器之间执行选择。通常三个就足够了,五个以上就足够了。如果您监视内部网络,则内部网络上的客户端应该能够与一台内部服务器并驾齐驱。使用合法的服务器或您的ISP NTP或DNS服务器作为时钟源。有公共池和公共服务器。

ntpd是自调整的,配置和启动后无需调整。使用最新的ntpd实现,您可以ntpdate完全放弃使用日期,因为它们可以完成日期的初始设置。

以下脚本将解析ntpd输出中的偏移量,并报告过多的偏移量。如果有问题,您可以从cron运行它以通过电子邮件发送给您。该脚本默认以0.1秒的偏移量发出警报。

#!/bin/bash
limit=100   # Set your limit in milliseconds here
offsets=$(ntpq -nc peers | tail -n +3 | cut -c 62-66 | tr -d '-')
for offset in ${offsets}; do
    if [ ${offset:-0} -ge ${limit:-100} ]; then
        echo "An NTPD offset is excessive - Please investigate"
        exit 1  
    fi  
done
# EOF

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章