Use date +%s
para obter um timestamp do UNIX como 1524388823
. Ao contrário da data de legibilidade humana, dependente de localidade, isso pode ser comparado mais facilmente em um script.
Em máquinas que estão sincronizadas corretamente, algo assim deve funcionar:
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)
é a hora local antes do SSH, -
(b)
é a hora remota, -
(c)
é a hora local após o SSH.
Se (a <= b <= c)
for razoavelmente seguro assumir que o tempo está sincronizado. Isso não leva em conta o lag da rede - verifique o delta (a, c) para isso -, mas ele ainda deve ser razoável. Assumindo que o SSH não vai pedir uma senha e / ou você não terá o dia todo fornecendo isso.
Se você ainda quiser adicionar 5 segundos de margem, use a-5 e c + 5. Claro que isso permite 5 segundos em qualquer direção - e não se qualifica como uma janela de 5 segundos em todas as máquinas. Mas a menos que você esteja realmente fazendo uma missão de espaço profundo como seus nomes de host sugerem, não há razão para aceitar uma discrepância de tempo tão grande em primeiro lugar.
Se você estiver usando o NTP constantemente, não apenas uma vez por ano, todas as máquinas devem estar em perfeita sincronia, e na maioria das vezes nós apenas supomos cegamente que este é o caso e nem mesmo nos preocupamos em verificar.