Я запускаю несколько тестовых сценариев на удаленной машине с Linux, используя мой локальный ноутбук с Windows.Обе машины подключены к маршрутизатору и подключены друг к другу через Ethernet.
Я могу прочитать системное время Linux, используя SSHing для системы Linux и выполнив команду date.Я преобразую возвращаемую строку из такой команды в объект datetime Python.
Используя такой объект datetime, я пытаюсь установить время на локальном хосте Windows с помощью win32api.SetSystemTime ().
Все это появляетсяработать нормально, но время на окна обновляется неправильно (часы).Я предполагаю, что это связано с часовым поясом, но я не знаю, как я могу передать информацию wni32api.SetSystemTime (), чтобы исправить это.
Когда время в удаленном Linux составляет 18.08 вечера, в Windows этоустанавливается как 11.08 утра.
Вот мой код: ~~~~~~~~~~~~~~~~~~~~~~~
import sys
from datetime import datetime
import paramiko
import win32api
hostComputerTime = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print ('The host laptop current date and time is - ', hostComputerTime)
HOST = "192.168.1.2"
PORT = 22
uname = 'root'
pwd = 'mypassword'
def getCyclerTime (host):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect (host, username = uname, password = pwd)
stdin, stdout, stderr = ssh.exec_command("date")
output = stdout.readlines()
print ("\n The command response on the host was - ", output)
return output [0]
except paramiko.SSHException:
print ("Trouble in making SSH connection")
ssh.close()
#Get the Cycler time
timeToSet = getCyclerTime (host = HOST)
print ("\n String value of the time from Cycler - ",timeToSet)
# Convert the date string from Cycler to datetime object
laptopTimetoSet = datetime.strptime (timeToSet, '%a %b %d %H:%M:%S %Z %Y\n')
print ("\n The converted date object is - ", laptopTimetoSet)
time = (laptopTimetoSet.year,
laptopTimetoSet.month,
laptopTimetoSet.isoweekday(),
laptopTimetoSet.day,
laptopTimetoSet.hour,
laptopTimetoSet.minute,
laptopTimetoSet.second,
0,
)
#Now set the laptop time
win32api.SetSystemTime (laptopTimetoSet.year,
laptopTimetoSet.month,
laptopTimetoSet.isoweekday(),
laptopTimetoSet.day,
laptopTimetoSet.hour,
laptopTimetoSet.minute,
laptopTimetoSet.second,
(laptopTimetoSet.microsecond)
)