2013-04-03 20 views
6

Próbuję zapytać o zmienną SNMP na urządzeniu routingu Cisco w Pythonie i próbuję.Wywołanie numerycznego identyfikatora OID w PySNMP?

Mam polecenie snmpwalk który działa prawidłowo:

$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 

Teraz staram się zrobić to samo w Pythonie przy użyciu pysnmp.

Próbowałem przy użyciu coś na podstawie przykładów tutaj - http://pysnmp.sourceforge.net/examples/current/index.html - ale dostał 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) 
...:) 

Ale mam następujące:

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 

Zasadniczo - Chciałem equavilent tego w NetSNMP, ale w PySNMP (http://ben.akrin.com/?p=1234).

Czy ktoś zna prosty sposób na zapytanie OID liczbowej w PySNMP?

Cheers, Victor

Odpowiedz

4

wierzę następujący kod będzie pracować dla Ciebie:

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])) 

Można wyciąć & wklej go do swojej Pythonie szybkiego próbować i eksperymentować z nim.

Obiekt MibVariable może być używany do odwoływania się do symbolu MIB według nazwy.