根据文档,setCmd
varBinds 引用是一系列托管对象。但是,我尝试传递一个列表[(oid0, value0), (oid1, value1)]
、一个元组((oid0, value0), (oid1, value1))
或一个集合set([(oid0, value0), (oid1, value1)])
,但它们都失败了,并出现错误“太多的值无法解包”。我需要能够发送带有多个 varbind 的单个集合请求。我可以成功发送每个托管对象,例如 (oid0, value0) 作为单独的setCmd
. 任何想法我怎么能做到这一点?
问问题
1580 次
2 回答
1
试试星号
abc = ((oid0, value0), (oid1, value1), (oid2, value2))
errorIndication, errorStatus, errorIndex, varBinds = cmdgen.CommandGenerator().setCmd(
self.authData, cmdgen.UdpTransportTarget((host_addr, 161)), *abc)
于 2013-02-01T15:51:29.220 回答
1
如示例页面所示,将可变数量的 (oid, value) 元组传递给 setCmd() 是一种向请求消息添加多个 var-bind 的方法。
以下代码将使用三个 var-bind 构建和发送 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'))
)
于 2012-11-13T07:14:46.127 回答