python-3.x - Pysnmp 加载 MIB 文本和 py 文件的问题
问题描述
我在使用 pysnmp 包时遇到问题。
我想从华为MA5600连接OLT设备。我有他的文本格式 * .mib 的 MIB,其想法是获取温度、能耗等
我有以下代码
from pysnmp.hlapi import *
from pysmi import debug
#debug.setLogger(debug.Debug('compiler'))
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('MyCommunity'),
UdpTransportTarget(('192.168.1.2', 161)),
ContextData(),
ObjectType(ObjectIdentity('1.3.6.1.2.1.1.6.0')),
ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0')),
ObjectType(ObjectIdentity('1.3.6.1.2.1.2.2.1.10')),
ObjectType(ObjectIdentity('1.3.6.1.4.1.2011.2.6.7.1.1.1.1.11'))\
.addAsn1MibSource('file:///home/devel/mib/',
'file:///home/devel/mib'
'http://mibs.snmplabs.com/asn1/@mib@',
'http://mibs.snmplabs.com/asn1/',
'file:///home/devel/mib/public/',
'file:///home/devel/mib/public')
)
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
在这种情况下,我有以下答案:
(sent) C:\DESARROLLOS\system>python v2c-get.py
SNMPv2-MIB::sysLocation.0 = EPL
SNMPv2-MIB::sysDescr.0 = Huawei Integrated Access Software
SNMPv2-SMI::mib-2.2.2.1.10 = No Such Instance currently exists at this OID
SNMPv2-SMI::enterprises.2011.2.6.7.1.1.1.1.11 = No Such Instance currently exists at this OID
我也尝试使用 addMibSource 函数添加 python mibs,我有 pysnmp_mibs 包,但它也不起作用。
应该注意的是,通过命令我得到了我请求的信息:
snmpwalk -v 2c -c MyCommunity 192.168.1.2 1.3.6.1.4.1.2011.2.6.7.1.1.1.1.1
应该注意的是,通过命令我得到了我请求的信息。
snmpwalk -v 2c -c 我的社区 192.168.1.2 1.3.6.1.4.1.2011.2.6.7.1.1.1.1.1
如果有人遇到类似的事情并且知道该怎么做,我将不胜感激。我正在使用 python 3.6、pysmi == 0.3.2、pysnmp == 4.4.6 和 pysnmp-mibs == 0.1.6
解决方案
如果您认为您应该在响应中获得一些值而不是“没有这样的实例”,那么问题是您正在查询设备上不存在的对象 (OID),或者您无权访问它。
如果您希望响应的 OID 被解析为人类友好的名称,您应该预加载定义这些 OID 的 MIB,例如 ObjectType(ObjectIdentity('1.3.6.1.2.1.2.2.1.10'))。loadMibs ('MY-MIB', 'MY-OTHER-MIB')。
无论哪种方式,最好的解决方案可能是按名称查询对象:
ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysLocation', 0))
...而不是通过 OID。按名称查询将自动加载您引用的 MIB。
快速文档在这里。
推荐阅读
- php - 在 Codeigniter 中将 php 版本(5.5.38)升级到最新版本 7.3 的问题
- android - 如何针对多种类型检查 IS
- sql - 将 CSV 支持的数据帧转换为配置单元表会失去多行支持
- r - dplyr 中的 stringi 函数
- json - 无法访问打字稿中的嵌套 JSON 数据 - Angular6
- android - android webview 显示其字体的默认字体系列是什么?
- schedule - 无法选择日程
- c++ - 如何从用户接收多个字符串并将这些字符串添加到 C++ 中的数组中?
- javascript - 当内容显然正确时,如何修复返回代码 0 的 XMLHttpRequest.open()?
- react-native - 如何在反应原生地图中显示放大/缩小按钮