como verificar o tempo de diferença entre máquinas linux não maiores que 5 segundos

1

Como posso verificar se todas as máquinas, appolo01 - mars3 , estão com menos de 5 segundos de diferença uma da outra?

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
    
por yael 22.04.2018 / 11:12

1 resposta

1

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.

    
por 22.04.2018 / 11:39