[英]pysnmp OID resolution
使用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 )
如果您使用的是這樣的代碼:
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方法:
>>> 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對象的MIB(也許是CISCO-PRODUCTS-MIB)。 )方法。 您可能還需要設置搜索路徑,以使pysnmp查找您引用的MIB。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.