python-3.x - 将 varBinds 中的 OID 转换为 MIB 的最有效方法
问题描述
在我的 SNMP 事务完成并将结果存储在 varBinds 中之后,我想将 MIB 和值分配给它们自己的变量以进行进一步处理。当我尝试:
for x in varBinds
print x
OID 已翻译,但是,当我尝试时,我需要将 mib 和值分配给各个变量:
for oid, val in varBinds
print oid, val
OID 未翻译。我还没有弄清楚如何使用.loadMibs
,所以我创建了一个函数来翻译我调用的 OID oid
:
T = oid2mib(oid)
def oid2mib(oid_str):
oid_tuple = tuple(oid_str)
mib_builder = builder.MibBuilder()
compiler.addMibCompiler(mib_builder)
mib_builder.loadModules('SNMPv2-MIB')
mib_view = view.MibViewController(mib_builder)
a, b, c = mib_view.getNodeName(oid_tuple)
return b[-1] + '.' + '.'.join(map(str, c))
print('Mib:%s Value:%s' % (T, val))
这有效,它将我的 OID 转换为 MIB,但我想知道这是否是实现我想要的结果的最有效方法?也许.loadMibs
可能更有效?
更新
我刚刚尝试了以下,
for x in varBinds
a, b = str(x).split('=')
print(a.rstrip(), b.rstrip(), sep=' => ')
这种方法的优点和缺点是什么?
解决方案
由于您在第一种情况下翻译了 var-bindings,我怀疑您已经加载了正确的 MIB。
所以试试这个:
for oid, val in varBinds
a, b = str(oid), str(val)
print(a, b, sep=' => ')
如果碰巧遇到未加载 MIB 的 OID,则需要调用loadMibs() 。
推荐阅读
- firebase - 在真实设备上时,Firestore 安全规则不会从令牌中检测电话号码
- python - 访问kivy文件中的python列表
- pandas - 网页抓取 - 慢慢滚动到页面底部不起作用 - 熊猫(硒)
- html - 在里面使用 ngModel
Angular 8 中的标签
- linux - 使用 echo 将记录附加到文件时出错
- django - Django - 无法将唯一查询与非唯一查询或 pub_date 字段查找不可用相结合
- javascript - data-id 总是返回相同的值
- conceptual - 将特定的非侵入性信息附加到文件或文件夹以保持与程序的连接
- sql - 创建触发器以存储审计跟踪
- r - 在与子集数据表连接的情况下,为什么列优先于数据表中同名的对象