我正在开发一个nagios / collectd检查每个服务器上的时间检查。 我已经完成了bash脚本来从Collectd WSP文件获取信息,并根据nagios服务器时间( date +%s )检查它们。 Collectd从上次发送起60秒后发送date +%s值。 我面对的问题是如何使检查命令计算,如果该值不同步最大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语句。 如果这个$stime与从nagios服务器获得的$time不匹配,那么它会发送关键的。 我想这是,如果nagios服务器的时间值超过60秒不同步相比,WSP的输出值,那么它的关键,否则其确定。
if [ "$stime" -ne "$time" ] ; then echo CRITICAL: Server time is out of sync! exit $STATE_CRITICAL fi
OK声明:
echo OK: Server time is in sync exit $STATE_OK
减去两次彼此,并检查结果是否大于60.看来, bash没有一个运算符来计算绝对值,所以你必须做的比较两种方式。
if [ $[time-stime] -gt 60 ] || [ $[stime-time] -gt 60 ] ; then