Python puresnmp walk windows已安装软件软件名称中文和安装时间正确显示方法

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值