7

Python で Cisco ルーティング デバイスの SNMP 変数を照会しようとしていますが、苦労しています。

正常に動作する snmpwalk コマンドがあります。

$snmpwalk -v2c -c <our_community_string> <device_ip_address> 1.3.6.1.4.1.9.9.42.1.2.10.1.1.950
SNMPv2-SMI::enterprises.9.9.42.1.2.10.1.1.950 = Gauge32: 68

今、私は pysnmp を使用して Python で同じことをしようとしています。

ここの例に基づいて何かを使用しようとしました - http://pysnmp.sourceforge.net/examples/current/index.html - しかし、SmiErrorを得ました:

In [1]: from pysnmp.entity.rfc3413.oneliner import cmdgen

In [2]: cmdGen = cmdgen.CommandGenerator()

In [3]: errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
...:     cmdgen.CommunityData('0pe3aro'),
...:     cmdgen.UdpTransportTarget(('10.65.113.28', 161)),
...:     cmdgen.MibVariable('1.3.6.1.4.1.9.9.42.1.2.10.1.1.950', 0)
...: )

しかし、私は次のようになります:

SmiError: MIB file "1.3.6.1.4.1.9.9.42.1.2.10.1.1.950.py[co]" not found in search path

基本的に-NetSNMPでこれと同等のものを望んでいましたが、PySNMP(http://ben.akrin.com/?p=1234)でした。

PySNMP で数値 OID を照会する簡単な方法を知っている人はいますか?

乾杯、ビクター

4

1 に答える 1

4

次のコードがうまくいくと思います:

from pysnmp.entity.rfc3413.oneliner import cmdgen

cmdGen = cmdgen.CommandGenerator()

errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
    '1.3.6.1.2.1.1.3.0'
)

print('\n'.join([ '%s = %s' % varBind for varBind in varBinds]))

これを Python プロンプトにカット アンド ペーストして、試してみることができます。

MibVariable オブジェクトは、MIB シンボルを名前で参照するために使用できます。

于 2013-04-26T21:16:20.243 に答える