比较多个服务器时间到本地时间

时间:2015-05-26 16:02:58

标签: bash shell date time scripting

我希望将x服务器时间量与控制本地时间(脚本运行时的当前时间)进行比较,以检查是否有任何服务器与当前时间不同步。如果服务器落后几秒钟,则抛出错误消息。

这是我到目前为止所拥有的

#!/bin/sh

servers="server1.... server2...."
now="date +%s"
for server in $servers
do
  ssh -l root ${server} "date +%s"
  if [ $? -eq "$now" ] ; then
    echo $server - IN SYNC
  else
    echo $server - NOT IN SYNC 
  fi
done

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

#!/bin/bash

servers="server1.... server2...."
seconds="3"  # value for servers to differ (in seconds)
for server in $servers
do
    difference=$(echo $(ssh -l root ${server} "( date +%s )") "-" $(date +%s) | bc)
    if [[ ${difference#-} -le ${seconds} ]] ; then
        echo $server - IN SYNC
    else
        echo $server - NOT IN SYNC 
    fi
done

我已经在伪代码中给出了脚本,就像你给你的那样(我已经切换到bash)。