すべてのコンピュータの間隔が5秒未満であることをどのappolo01
ように確認できますか?mars3
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
答え1
date +%s
たとえば、1524388823
ロケールによって人間が読める日付とは異なり、UNIXタイムスタンプを取得するために使用されます。これにより、スクリプトで比較しやすくなります。
時間が正しく同期されたマシンでは、次のように動作します。
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を1年に1回ではなく継続的に使用する場合は、とにかくすべてのコンピュータが完全に同期する必要があります。