Bash 时间检查脚本允许 1 分钟的差异

Bash 时间检查脚本允许 1 分钟的差异

我正在开发一个 nagios/collectd 检查程序,用于检查每台服务器的时间。我已经编写了 bash 脚本,用于从 Collectd WSP 文件中获取信息,并根据 nagios 服务器时间 ( date +%s) 对其进行检查。Collectddate +%s在上次发送后 60 秒发送值。我面临的问题是如何让检查命令计算出,如果值不同步的最大时间为 60 秒,则一切正常,如果值不同步的时间超过 60 秒,则情况危急。

剧本:

在 nagios 服务器上收集时间,并收集其他服务器发送的 WSP 文件。每个命令都返回一个纪元值($time取自 nagios 服务器,$stime取自 collectd WSP 文件):

time=`date +%s`
stime=`whisper-fetch --from=$(expr $(date +%s) - 60) --until=$(date +%s) $WSP_PATH | cut -c1-10`

关键 IF 语句。如果这与从 nagios 服务器获取的信息$stime不匹配,$time则发送关键信息。我希望这是,如果 nagios 服务器的时间值与 WSP 输出值相比不同步超过 60 秒,则它是关键的,否则是正常的。

if [ "$stime" -ne "$time" ] ; then
    echo CRITICAL: Server time is out of sync!
    exit $STATE_CRITICAL
fi

确定声明:

echo OK: Server time is in sync
exit $STATE_OK

答案1

将两个时间相减,并检查结果是否大于 60。似乎bash没有运算符来计算绝对值,因此您必须以两种方式进行比较。

if [ $[time-stime] -gt 60 ] || [ $[stime-time] -gt 60 ] ; then

相关内容