0

ドキュメントによると、setCmdvarBinds 参照は管理対象オブジェクトのシーケンスです。[(oid0, value0), (oid1, value1)]ただし、リスト、タプル((oid0, value0), (oid1, value1))、またはセットを渡そうとしましたがset([(oid0, value0), (oid1, value1)])、それらはすべて「解凍するには値が多すぎます」というエラーで失敗します。複数の varbinds を含む単一の set 要求を送信できる必要があります。たとえば、(oid0, value0) などの各管理対象オブジェクトを個別の .xml として正常に送信できますsetCmd。どうすればこれを行うことができますか?

4

2 に答える 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 に答える