Linux
如何驗證linux機器之間的差異時間不大於5秒
如何驗證所有機器
appolo01
-mars3
彼此之間的偏移小於 5 秒?ssh appolo01 date ; ssh appolo02 date ; ssh appolo03 date ; ssh mars1 date ; ssh mars2 date ; ssh mars3 date Sun Apr 22 09:05:39 UTC 2018 Sun Apr 22 09:05:40 UTC 2018 Sun Apr 22 09:05:40 UTC 2018 Sun Apr 22 09:05:40 UTC 2018 Sun Apr 22 09:05:40 UTC 2018 Sun Apr 22 09:05:48 UTC 2018
用於
date +%s
獲取 UNIX 時間戳,例如1524388823
. 與依賴於語言環境的、人類可讀的日期不同,這可以在腳本中更容易地進行比較。在時間正確同步的機器上,這樣的事情應該可以工作:
a=$(date +%s) b=$(ssh user@remote date +%s) c=$(date +%s) if [ $a -le $b -a $b -le $c ] then echo Seems to be OK. fi
(a)
是 SSH 之前的本地時間,(b)
是遙遠的時間,(c)
是 SSH 之後的本地時間。如果
(a <= b <= c)
可以合理安全地假設時間是同步的。這根本沒有考慮到網路延遲——檢查 delta(a,c) ——但它仍然應該是合理的。假設 SSH 不會要求輸入密碼和/或您不會花一整天時間提供密碼。如果您仍想為此添加 5 秒的邊距,請使用 a-5 和 c+5。當然,這在任一方向都允許 5 秒 - 並且不符合所有機器的 5 秒視窗條件。但除非你真的像主機名所暗示的那樣執行深空任務,否則沒有理由首先接受如此巨大的時間差異。
如果您經常使用 NTP,而不僅僅是每年一次,那麼無論如何,所有機器都應該完美同步,而且大多數時候我們只是盲目地假設是這種情況,甚至懶得去檢查。