首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pysnmp OID分辨率

pysnmp OID分辨率
EN

Stack Overflow用户
提问于 2018-12-04 00:01:45
回答 1查看 474关注 0票数 0

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

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

代码语言:javascript
复制
./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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 07:11:07

如果您使用的是代码像这样

代码语言:javascript
复制
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对象被表示为OID,那么上面代码中的varBind实际上是一个ObjectType类实例,它的行为类似于两个元素的元组。第一个元素是ObjectIdentity,它具有.getOid方法:

代码语言:javascript
复制
>>> objectIdentity = ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)
>>> objectIdentity.resolveWithMib(mibViewController)
>>> objectIdentity.getOid()
ObjectName('1.3.6.1.2.1.1.1.0')

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53603783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档