python-3.x - 如何使用 pysnmp 遍历子表
问题描述
我想走一下enterprise.35604.2.3.5.7.2 oid下的snmp表。这将返回一个日志列表。
当我执行代码时,它不会在最后一个表格元素之后停止。我如何确保它会在所有子表完成后停止?
from pysnmp.hlapi import *
logoid='1.3.6.1.2.1.69.1.5.8.1.7'
def scan_cm_log(ipaddress, oid):
for (errorIndication, errorStatus, errorIndex, varBinds) in nextCmd(SnmpEngine(),
CommunityData('<key>'),
UdpTransportTarget((ipaddress, 161)),
ContextData(),
ObjectType(ObjectIdentity(oid)),
):
if not errorIndication and not errorStatus:
for varBind in varBinds:
result=' = '.join([x.prettyPrint() for x in varBind])
print(result)
scan_cm_log('<ip>', logoid)
解决方案
尝试按照此处lexicographicMode=False
的说明添加标志。
iterator = nextCmd(
SnmpEngine(),
CommunityData('<key>'),
UdpTransportTarget((ipaddress, 161)),
ContextData(),
ObjectType(ObjectIdentity(oid)),
lexicographicMode=False)
for (errorIndication, errorStatus, errorIndex, varBinds) in iterator:
...
一旦您查询的所有 OID 离开其各自的初始 OID 前缀,这应该会耗尽迭代器。
推荐阅读
- python - 请求发布文件失败
- selenium - 如何使用硒或机器人编辑跨度文本并保存
- reactjs - Redux saga 函数在第一次尝试时没有运行
- javascript - 使用 ReactJS 的工作日的多个时间段
- python - 从 python 中的函数调用键盘记录器进入无响应状态
- mysql - SQL 查询 - 如果两者都没有,则显示
- php - CURL 响应发送到自定义 URL PHP/Laravel
- php - Laravel 7.x:Darryldecode 购物车 - “需要会话密钥”警报会干扰每个页面
- django - Django:如何设置站点名称并将其显示在所有页面标题的末尾
- teradata - Teradata 自动增量 ID