Pythoneasysnmp模块返回SNMP OID,分为两部分:oid
和oid_index
。例如,如果我遍历ipAddressIfIndex.ipv4
(.1.3.6.1.2.1.4.34.1.3.1
数字形式)OID:
>>> from easysnmp import Session
>>> session = Session(hostname="r1", community='public', version=2, use_long_names=True, use_sprint_value=True)
>>> session.bulkwalk("ipAddressIfIndex.1")
[<SNMPVariable value='9' (oid='.iso.org.dod.internet.mgmt.mib-2.ip.ipAddressTable.ipAddressEntry.ipAddressIfIndex', oid_index='1.4.192.0.2.1', snmp_type='INTEGER')>,
/* rest of the output is removed for brevity */
>>>
。。然后oid
是.iso.org.dod.internet.mgmt.mib-2.ip.ipAddressTable.ipAddressEntry.ipAddressIfIndex
(或.1.3.6.1.2.1.4.34.1.3
数字),而oid_id
是1.4.192.0.2.1
。我想将返回的oid
右移两位,这样oid_id
将是192.0.2.1
。这可能吗?我尝试了session.bulkwalk("ipAddressIfIndex.1.4")
、session.bulkwalk(("ipAddressIfIndex", "1.4"))
、session.bulkwalk(".1.3.6.1.2.1.4.34.1.3.1.4")
并使用了各种会话参数,如use_long_names
或use_enums
,但我无法修改此行为
这显然不是什么大问题,因为我可以读取最后四个字段(例如oid_index.split('.')[-4:]
),但可能有一个技巧可以在easysnmp返回的oid
和oid_index
之间移动“行”
您可以使用正则表达式提取您的信息
或者您可以使用PySNMP
检查此answer
相关问题 更多 >
编程相关推荐