ドキュメントによると、setCmd
varBinds 参照は管理対象オブジェクトのシーケンスです。[(oid0, value0), (oid1, value1)]
ただし、リスト、タプル((oid0, value0), (oid1, value1))
、またはセットを渡そうとしましたがset([(oid0, value0), (oid1, value1)])
、それらはすべて「解凍するには値が多すぎます」というエラーで失敗します。複数の varbinds を含む単一の set 要求を送信できる必要があります。たとえば、(oid0, value0) などの各管理対象オブジェクトを個別の .xml として正常に送信できますsetCmd
。どうすればこれを行うことができますか?
質問する
1580 次
2 に答える
1
例のページに示されているように、可変数の(oid、value)タプルをsetCmd()に渡すことは、メッセージを要求するために複数のvar-bindを追加する方法です。
次のコードは、3つのvar-bindを使用してSNMPSETメッセージを作成して送信します。
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 に答える
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 に答える