У меня есть два компьютера, но я не могу изменить время на одном, поэтому мне нужно синхронизировать один из них с другим. У него есть QNX. А что я могу сделать?? только команды
2 ответа
Лучшим решением будет установить 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-сервером.
Если вам нужна большая точность и вы не хотите использовать 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-соединение.