from puresnmp import walk
import struct, pytz, datetime
def decode_snmp_date(octetstr: bytes) -> datetime.datetime:
size = len(octetstr)
if size == 8:
(year, month, day, hour, minutes,
seconds, deci_seconds,
) = struct.unpack('>HBBBBBB', octetstr)
return datetime.datetime(
year, month, day, hour, minutes, seconds,
deci_seconds * 100_000, tzinfo=pytz.utc)
elif size == 11:
(year, month, day, hour, minutes,
seconds, deci_seconds, direction,
hours_from_utc, minutes_from_utc,
) = struct.unpack('>HBBBBBBcBB', octetstr)
offset = datetime.timedelta(
hours=hours_from_utc, minutes=minutes_from_utc)
if direction == b'-':
offset = -offset
return datetime.datetime(
year, month, day, hour, minutes, seconds,
deci_seconds * 100_000, tzinfo=pytz.utc) + offset
raise ValueError("The provided OCTETSTR is not a valid SNMP date")
IP = "127.0.0.1"
COMMUNITY = 'public'
OID = '1.3.6.1.2.1.25.6.3.1'
for row in walk(IP, COMMUNITY, OID):
if (str(row.oid)).__contains__("1.3.6.1.2.1.25.6.3.1.2"):
print(row.oid, ' = ', row.value.decode('GBK', 'strict'))
elif (str(row.oid)).__contains__("1.3.6.1.2.1.25.6.3.1.5"):
print(row.oid, ' = ', decode_snmp_date(row.value))
else:
print(row.oid, ' = ', row.value)
Python puresnmp walk windows已安装软件软件名称中文和安装时间正确显示方法
SNMP日期解码与网络设备信息检索
最新推荐文章于 2024-03-25 22:58:57 发布
本文介绍了一种使用Python从网络设备获取SNMP数据的方法,并详细解释了如何解析SNMP时间戳格式。此外,还展示了如何通过SNMP协议读取特定OID的数据,包括日期解码和字符串解码。
366

被折叠的 条评论
为什么被折叠?



