como posso sincronizar a data e hora em dois computadores?

2

Eu tenho dois computadores, mas não consigo alterar a hora em um, então tenho que sincronizar um deles com o outro. Tem QNX. O que eu posso fazer?? somente comandos

    
por Evaristoyok 03.04.2013 / 20:33

2 respostas

5

A melhor solução seria instalar NTP em ambas as máquinas e sincronizá-las com o mesmo servidor. Isso não é uma opção, é claro, se você tiver apenas root de acesso a um dos dois.

Supondo que você tenha acesso ssh às duas máquinas, esse machine1 é aquele cuja data você não pode mudar e machine2 aquele cuja data você pode alterar (como o usuário root ), você pode fazer algo assim:

remote_time='ssh user@machine1 date' && date -s $remote_time

Você precisará alterar user para seu nome de usuário em machine1 . Se você executar este comando quando estiver logado como root on machine2 , você definirá sua data com o mesmo valor que machine1 .

EXPLICAÇÃO:

O comando acima irá ssh como usuário user to machine1 e salvará o resultado de date (a hora e a data atuais para machine1 ) na variável $remote_time . Se o ssh sair com sucesso ( && ), a segunda parte do comando definirá o tempo de machine2 (a máquina da qual o comando foi executado) para o valor de $remote_time .

CAVEAT: Os dois comandos levam algum tempo para serem concluídos. Quando eu os testei na minha máquina, eles demoraram 0,3 segundos, poderia demorar mais no seu. Esteja ciente de que, se você precisar de precisão em milissegundos, isso não funcionará. Então, novamente, se você precisar de milissegundos de precisão, a coisa somente que funcionará é a sincronização de ambas as máquinas para um servidor NTP.

    
por 03.04.2013 / 21:22
0

Se você precisar de mais precisão e não quiser usar o ntp por qualquer motivo, você pode usar essa modificação sobre o método @terdon.

Método preguiçoso. Suponha que você gaste 0,85s na conexão ssh:

host1# b='date +%s.%N'; a='echo $b + 0.85|bc';  ssh -4 -C user@host2 "date --set=\"@$a\""

Mais sofisticado:

host1# a='ssh user@host2 date +%s.%N' ; b='ssh user@host2 date +%s.%N'; c='echo $b +$b -$a | bc ' ; echo $c ;ssh user@host2 "date --set=\"@$c\" --rfc-3339=ns" ;date --rfc-3339=ns


1514483228.883729365
2017-12-28 18:47:08.883729365+01:00
2017-12-28 18:47:08.790489767+01:00

Como pré-requisito, você precisa ter o cliente e o servidor preparados para trocar as chaves do usuário para evitar entradas de senha e ter certeza de que você tem a resolução reversa do dns da máquina host1 ou terá uma conexão ssh lenta.

    
por 28.12.2017 / 18:58

Tags