0

自分のマシンから snmpwalk を実行できます

snmpwalk -c public -v 2c junipertestrtr 1.3.6.1.4.1.2636.5.1.1.2.1.1.1.13.0.1 同じコンピューターのコマンドラインから正しい出力が得られます

iso.3.6.1.4.1.2636.5.1.1.2.1.1.1.13.0.1.172.28.254.83.1.172.16.25.82 = Gauge32: 64902 iso.3.6.1.4.1.2636.5.1.1.2.1.1.1.13.0.1.172.28 .254.135.1.172.17.25.134 = Gauge32: 64902 iso.3.6.1.4.1.2636.5.1.1.2.1.1.1.13.0.1.172.28.255.135.1.172.29.255.136 = Gauge32: 64861 iso.3.1.6.16. .5.1.1.2.1.1.1.13.0.1.172.28.255.135.1.172.28.255.137 = Gauge32: 64861 iso.3.6.1.4.1.2636.5.1.1.2.1.1.1.13.0.1.172.28.255.135.1.82.2.2。 138 = Gauge32: 64861 iso.3.6.1.4.1.2636.5.1.1.2.1.1.1.13.0.1.10.1.1.1.1.10.1.1.2 = Gauge32: 64810

ただし、pysnmp から同じものを実行しようとすると、失敗します。

from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.smi import *


cmdGen = cmdgen.CommandGenerator()

errorIndication, errorStatus, errorIndex, varBind = cmdGen.nextCmd(
    cmdgen.CommunityData('public', 1),
    cmdgen.UdpTransportTarget(('junipertestrtr', 161)),
    (1,3,6,1,4,1,2636,5,1,1,2,1,1,1,13,0,1),

)

print errorIndication, errorStatus

for varBindTableRow in varBind:
    for name, val in varBindTableRow:
        print name, val

以下のエラーメッセージ「requestTimedOut 0」が表示されます

4

1 に答える 1

0

あなただけを使用する必要があります:

cmdgen.CommunityData('public')

また:

cmdgen.CommunityData('public', mpModel=1)  # mpModel specifies SNMP protocol version

また:

cmdgen.CommunityData('my-snmp-agent', 'public', 1)

スクリプトの先頭で pysnmp デバッグを有効にして、内部で何が起こっているかを確認することもできます。

debug.setLogger(debug.Debug('msgproc', 'secmod'))

多くの例がpysnmp サイトで入手できます

于 2013-08-05T07:16:44.927 に答える