@MaQleod OP nie ma root dostęp do obu maszyn, więc nie jest to opcja. Zrozumiałem to przez „nie mogę zmienić czasu w jednym”.
terdon
Odpowiedzi:
5
Najlepszym rozwiązaniem byłoby zainstalowanie NTP na obu komputerach i zsynchronizuj je z tym samym serwerem. Oczywiście nie jest to opcja, jeśli tylko masz root dostęp do jednego z dwóch.
Zakładając, że masz dostęp ssh do obu maszyn, to machine1 to ten, z którym się umawiasz nie może zmienić i machine2 ten, z którym się umawiasz mogą zmiana (jako root użytkownik), możesz zrobić coś takiego:
remote_time=`ssh user@machine1 date` && date -s $remote_time
Musisz się zmienić user na nazwę użytkownika machine1. Jeśli uruchomisz to polecenie po zalogowaniu jako root na machine2, ustawisz jej datę na taką samą wartość jak machine1.
WYJAŚNIENIE:
Powyższe polecenie spowoduje ssh jako użytkownik user do machine1 i zapisz wynik date (aktualny czas i data dla machine1 ) do zmiennej $remote_time. Jeśli ssh kończy się pomyślnie ( && ), druga część polecenia ustawi czas machine2 (maszyna, z której polecenie zostało uruchomione) do wartości $remote_time.
CAVEAT: Dwa polecenia wymagają trochę czasu. Kiedy przetestowałem je na moim komputerze, zajęło im to 0,3 sekundy, może to zająć więcej czasu. Pamiętaj tylko, że jeśli potrzebujesz dokładności rzędu milisekund, to nie zadziała. Z drugiej strony, jeśli potrzebujesz dokładności milisekundy, tylko to, co będzie działać, to synchronizacja obu komputerów z serwerem NTP.
Warunkiem wstępnym jest przygotowanie klienta i serwera do wymiany kluczy użytkownika w celu uniknięcia wprowadzania haseł i upewnienia się, że masz rozdzielczość odwrotną dns zarówno komputera host1, jak i będziesz mieć opóźnione połączenie ssh.
root
dostęp do obu maszyn, więc nie jest to opcja. Zrozumiałem to przez „nie mogę zmienić czasu w jednym”.Odpowiedzi:
Najlepszym rozwiązaniem byłoby zainstalowanie NTP na obu komputerach i zsynchronizuj je z tym samym serwerem. Oczywiście nie jest to opcja, jeśli tylko masz
root
dostęp do jednego z dwóch.Zakładając, że masz dostęp ssh do obu maszyn, to
machine1
to ten, z którym się umawiasz nie może zmienić imachine2
ten, z którym się umawiasz mogą zmiana (jakoroot
użytkownik), możesz zrobić coś takiego:Musisz się zmienić
user
na nazwę użytkownikamachine1
. Jeśli uruchomisz to polecenie po zalogowaniu jakoroot
namachine2
, ustawisz jej datę na taką samą wartość jakmachine1
.WYJAŚNIENIE:
Powyższe polecenie spowoduje
ssh
jako użytkownikuser
domachine1
i zapisz wynikdate
(aktualny czas i data dlamachine1
) do zmiennej$remote_time
. Jeślissh
kończy się pomyślnie (&&
), druga część polecenia ustawi czasmachine2
(maszyna, z której polecenie zostało uruchomione) do wartości$remote_time
.CAVEAT: Dwa polecenia wymagają trochę czasu. Kiedy przetestowałem je na moim komputerze, zajęło im to 0,3 sekundy, może to zająć więcej czasu. Pamiętaj tylko, że jeśli potrzebujesz dokładności rzędu milisekund, to nie zadziała. Z drugiej strony, jeśli potrzebujesz dokładności milisekundy, tylko to, co będzie działać, to synchronizacja obu komputerów z serwerem NTP.
źródło
Jeśli potrzebujesz większej dokładności i nie chcesz używać ntp z jakiegokolwiek powodu, możesz użyć tej modyfikacji w metodzie @terdon.
Metoda leniwa. Załóżmy, że wydajesz 0.85s w połączeniu ssh:
Bardziej wyrafinowane:
Warunkiem wstępnym jest przygotowanie klienta i serwera do wymiany kluczy użytkownika w celu uniknięcia wprowadzania haseł i upewnienia się, że masz rozdzielczość odwrotną dns zarówno komputera host1, jak i będziesz mieć opóźnione połączenie ssh.
źródło