繁体   English   中英

如何在 Python 中以秒为单位获得正确的时差?

[英]How to get the correct time difference in seconds in Python?

我正在编写一个 python 脚本来使用 SNMP 检查远程系统上的时间。 我在这个脚本中使用了模块 subprocess、pytz、datetime 和 time。

这段代码的预期工作是,它将使用子进程获取远程系统的当前时间,并将其与使用模块 pytz、datetime 和 time 获得的实际时间进行比较。 问题是当我使用这个脚本计算时差时,它并没有让我得到正确的时差(以秒为单位)。 谁能帮我这个?

# Finding remote time
snmp_remote_ts = subprocess.run(["/usr/bin/snmpwalk", "-r", "3", "-c", "{}".format(snmp_community), "-v", "{}".format(snmp_ver), "{}:{}".format(remote_host,snmp_port), "{}".format(OID_hrSystemDate)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
remote_time = snmp_remote_ts.stdout.decode().split()[-1].replace(","," ").split(".")[0]
remote_ts = int(time.mktime(datetime.datetime.strptime(remote_time, "%Y-%m-%d %H:%M:%S").timetuple()))

# Finding actual time of provided timezone
actual_time_now = int(datetime.datetime.now(timezone(remote_tz)).timestamp())

# Finding time difference
time_diff = actual_time_now - remote_ts

我已经通过重写代码解决了这个问题,如下所示:

# Finding remote time
snmp_remote_ts = subprocess.run(["/usr/bin/snmpwalk", "-r", "3", "-c", "{}".format(snmp_community), "-v", "{}".format(snmp_ver), "{}:{}".format(remote_host,snmp_port), "{}".format(OID_hrSystemDate)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
remote_time = snmp_remote_ts.stdout.decode().split()[-1].replace(","," ").split(".")[0]
remote_ts = datetime.datetime.strptime(remote_time, "%Y-%m-%d %H:%M:%S")

# Finding actual time of provided timezone
actual_time_now = datetime.datetime.now(timezone(remote_tz)).replace(tzinfo=None,microsecond=0)

# Finding time difference
time_diff = actual_time_now - remote_ts
time_diff_seconds = time_diff.seconds

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM