pysnmp OID解析

2024-07-04 17:10:32 发布

您现在位置:Python中文网/ 问答频道 /正文

使用pysnmp,如何对返回OID而不是值的查询执行解析?在

我使用pysnmp编写了一个查找工具,以下是输入和结果:

./run_snmp_discovery.py --host 1.1.1.1 --community XXXXXX --command get --mib_oid_index  '{ "mib" : "SNMPv2-MIB", "oid" : "sysObjectID", "index" : "0"  }' --verbose
Debug: 'varBind': SNMPv2-MIB::sysObjectID.0 = SNMPv2-SMI::enterprises.9.1.222
{"0": {"sysObjectID": "SNMPv2-SMI::enterprises.9.1.222"}}

如何将结果转换为文本值cisco7206VXR(引用http://www.circitor.fr/Mibs/Html/C/CISCO-PRODUCTS-MIB.php#cisco7206VXR


Tags: 工具runpyindexdiscoverysnmpsmimib
1条回答
网友
1楼 · 发布于 2024-07-04 17:10:32

如果您正在使用代码like this

from pysnmp.hlapi import *

errorIndication, errorStatus, errorIndex, varBinds = next(
    getCmd(SnmpEngine(),
           CommunityData('public'),
           UdpTransportTarget(('demo.snmplabs.com', 161)),
           ContextData(),
           ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)))
)

for varBind in varBinds:
    print(' = '.join([x.prettyPrint() for x in varBind]))

您希望MIB object被表示为一个OID,那么上面代码中的varBind实际上是一个{a2}类实例,其行为类似于两个元素的元组。第一个元素是ObjectIdentity,它具有.getOid方法:

^{pr2}$

如果您希望MIB对象及其值完全用MIB术语表示(即将值解析为枚举),那么只需使用.loadMibs()方法加载定义该MIB对象的MIB(可能是CISCO-PRODUCTS-MIB)。您可能还需要设置一个search path,让pysnmp找到您引用的MIB。在

相关问题 更多 >

    热门问题