gpt4 book ai didi

python - pysnmp v3 获取批量

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:53 32 4
gpt4 key购买 nike

我目前有一个脚本,可以使用 PySNMP 轮询多个设备上的多个 oid。它从文件中读取主机列表,对于某些主机需要轮询 3 或 4 个 oid,目前它是按顺序执行此操作,因此为了提高效率,我想做一个 getbulk,所以我只轮询每个主持一次。

我对此进行了多次搜索,可以找到大量使用 pysnmp 和 snmp v2 的示例,但我找不到使用 snmpv3 的示例。我已经尝试了下面的测试脚本,但它抛出了一个错误,所以有人可以看一下并让我知道我做错了什么吗?我的测试脚本如下所示:

from pysnmp.entity.rfc3413.oneliner import cmdgen
host='10.0.0.1'
incount = '.1.3.6.1.2.1.31.1.1.1.6.16'
outcount ='.1.3.6.1.2.1.31.1.1.1.10.16'

errorIndication, errorStatus, errorIndex,
varBindTable = cmdgen.CommandGenerator().bulkCmd(
UsmUserData('snmp_user', 'password', 'password',
authProtocol=usmHMACSHAAuthProtocol,
privProtocol=usmAesCfb128Protocol),
UdpTransportTarget((host, 161)),
0,
25,
(incount),
(outcount),
)

if errorIndication:
print errorIndication
else:
if errorStatus:
print '%s at %s\n' % (
errorStatus.prettyPrint(),
errorIndex and varBindTable[-1][int(errorIndex)-1] or '?'
)
else:
for varBindTableRow in varBindTable:
for name, val in varBindTableRow:
print '%s = %s' % (name.prettyPrint(), val.prettyPrint())

和错误:

Traceback (most recent call last):
File "./multiget.py", line 7, in <module>
errorIndication, errorStatus, errorIndex,
NameError: name 'errorIndication' is not defined

它几乎在第一个障碍处就失败了,所以我显然语法错误,但就像我说的,我找不到 snmpv3 的示例。

谢谢

编辑

最佳答案

首先看起来像是格式错误。试试这个布局:

from pysnmp.entity.rfc3413.oneliner import cmdgen

host='10.0.0.1'
incount = '.1.3.6.1.2.1.31.1.1.1.6.16'
outcount ='.1.3.6.1.2.1.31.1.1.1.10.16'

cmdGen = cmdgen.CommandGenerator()

(errorIndication, errorStatus, errorIndex,
varBindTable) = cmdGen.bulkCmd(
UsmUserData('snmp_user', 'password', 'password',
authProtocol=usmHMACSHAAuthProtocol,
privProtocol=usmAesCfb128Protocol),
UdpTransportTarget((host, 161)),
0,
25,
incount,
outcount,
)
...

此外,CommandGenerator(即底层 SnmpEngine 对象)的创建成本很高。因此,只要您打算使用它,就保留它是有意义的。

关于python - pysnmp v3 获取批量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53733191/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com