setCmd的托管对象上的pySNMP序列

2024-09-30 12:15:32 发布

您现在位置:Python中文网/ 问答频道 /正文

根据文档,setCmdvarBinds引用是一系列托管对象。但是,我试图传递一个列表[(oid0, value0), (oid1, value1)]或元组{}或集合set([(oid0, value0), (oid1, value1)]),所有这些都失败了,错误是“太多的值无法解包”。我需要能够发送一个带有多个varbinds的set请求。我可以成功地将每个托管对象,例如(oid0,value0)作为单独的setCmd发送。有什么办法吗?在


Tags: 对象文档列表错误元组setvalue1办法
2条回答

on the examples page所示,向setCmd()传递可变数量的(oid,value)元组是向请求消息添加多个var绑定的一种方法。在

以下代码将生成和发送具有三个var绑定的SNMP SET消息:

cmdGen.setCmd(
    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('localhost', 161)),
    ('1.3.6.1.2.1.1.2.0', rfc1902.ObjectName('1.3.6.1.4.1.20408.1.1')),
    ('1.3.6.1.2.1.1.2.0', '1.3.6.1.4.1.20408.1.1'),
    ('1.3.6.1.2.1.1.5.0', rfc1902.OctetString('new system name'))
)

试试星号

abc = ((oid0, value0), (oid1, value1), (oid2, value2))
errorIndication, errorStatus, errorIndex, varBinds = cmdgen.CommandGenerator().setCmd(
    self.authData, cmdgen.UdpTransportTarget((host_addr, 161)), *abc)

相关问题 更多 >

    热门问题