0

2 つのほぼ同一のメソッド呼び出しがあり、それらは異なる結果を返します

from pyasn1.type import univ
from pysnmp.entity.rfc3413.oneliner import cmdgen
def printResult(*result):
    print str(result)

print cmdgen.CommandGenerator().nextCmd(cmdgen.CommunityData('agent', 'public', 1), cmdgen.UdpTransportTarget(('172.16.1.15', 161)), (univ.ObjectIdentifier(("1.3.6.1.4.1.5528.100.4.1.1.1.10"),)))

getCmdGen = cmdgen.AsynCommandGenerator()
getCmdGen.nextCmd(cmdgen.CommunityData('agent', 'public', 1), cmdgen.UdpTransportTarget(('172.16.1.15', 161)), (univ.ObjectIdentifier(("1.3.6.1.4.1.5528.100.4.1.1.1.10")),), (printResult, (None,)))
getCmdGen.snmpEngine.transportDispatcher.runDispatcher()

これは出力します:

(None, Integer('noError'), Integer(0), [[(ObjectName(1.3.6.1.4.1.5528.100.4.1.1.1.10.1095346743), Counter32(1095346743))], [(ObjectName(1.3.6.1.4.1.5528.100.4.1.1.1.10.1382714849), Counter32(1382714849))]])
(695125368, None, Integer('noError'), Integer(0), [[(ObjectName(1.3.6.1.4.1.5528.100.4.1.1.1.10.1095346743), Counter32(1095346743))]], None)

よく見ると、最初のものは 2 つの項目を正しく返し、2 番目のものは 1 つだけを返すことがわかります。

[[(ObjectName(1.3.6.1.4.1.5528.100.4.1.1.1.10.1095346743), Counter32(1095346743))], [(ObjectName(1.3.6.1.4.1.5528.100.4.1.1.1.10.1382714849), Counter32(1382714849))]]

[[(ObjectName(1.3.6.1.4.1.5528.100.4.1.1.1.10.1095346743), Counter32(1095346743))]]

編集。場合によっては奇妙なエラーが発生する理由がわかりましたが、残りは修正されませんでした

4

1 に答える 1

1

コールバック関数が何も返さない場合は停止します。コールバック関数が 1 (または True と評価されるもの) を返す場合のみ、次の値が要求されます。

于 2013-04-18T08:59:39.860 に答える