将多个服务器时间与本地时间进行比较

Compare multiple server times to localtime

我希望将 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

尝试这样的事情:

#!/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)。