2

У меня есть два компьютера, но я не могу изменить время на одном, поэтому мне нужно синхронизировать один из них с другим. У него есть QNX. А что я могу сделать?? только команды

2 ответа2

5

Лучшим решением будет установить NTP на обеих машинах и синхронизировать их с одним и тем же сервером. Конечно, это не вариант, если у вас есть только root доступ к одному из двух.

Предполагая, что у вас есть доступ по ssh к обеим машинам, что machine1 - это тот, чью дату вы не можете изменить, а machine2 - тот, чью дату вы можете изменить (как пользователь root ), вы можете сделать что-то вроде этого:

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

Вам нужно будет сменить user на свое имя пользователя на machine1 . Если вы запустите эту команду, войдя в систему как root на machine2 , вы установите для ее даты то же значение, что и для machine1 .

ОБЪЯСНЕНИЕ:

Приведенная выше команда будет ssh от имени пользователя user на machine1 и сохранит результат date (текущее время и дата для machine1) в переменную $remote_time . Если ssh успешно завершает работу (&&), вторая часть команды установит для времени machine2 (машина, с которой была запущена команда) значение $remote_time .

ПРЕДУПРЕЖДЕНИЕ: две команды требуют времени для завершения. Когда я проверил их на своей машине, они заняли 0,3 секунды, а на вашей - больше. Просто помните, что если вам нужна точность в миллисекундах, это не сработает. Опять же, если вам нужна точность в миллисекунды, единственное , что будет работать, - это синхронизировать обе машины с NTP-сервером.

0

Если вам нужна большая точность и вы не хотите использовать ntp по какой-либо причине, вы можете использовать эту модификацию поверх метода @terdon.

Ленивый метод. Предположим, что вы тратите 0,85 с в соединении ssh:

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

Более сложный:

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

В качестве предварительного условия вам необходимо подготовить клиент и сервер к обмену пользовательскими ключами, чтобы избежать ввода пароля, и быть уверенным, что у вас есть обратное разрешение DNS для обоих компьютеров host1, или у вас будет медленное ssh-соединение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .