簡體   English   中英

pysnmp OID解析

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM