2017-02-20 2 views
0

나는 안드로이드에 SNMP 에이전트가 있습니다. 나는이 파이썬 스크립트를 사용하여 전체 MIBTree를 복구하기 위해 노력하고있어 :SNMP : 대량 명령을 사용하여 파이썬으로 전체 MIB 트리 복구

from pysnmp.entity.rfc3413.oneliner import cmdgen 


cmdGen = cmdgen.CommandGenerator() 

errorIndication, errorStatus, errorIndex, \ 
varBinds = cmdGen.bulkCmd( 
     cmdgen.CommunityData('public', mpModel=0), 
     cmdgen.UdpTransportTarget(('192.168.0.90', 32150)), 
     0, 
     25, 
     (1,3,6,1,4,1,12619,1,1) 
    ) 

if errorIndication: 
    print(errorIndication) 
elif errorStatus: 
    print('%s at %s' % (errorStatus.prettyPrint(), 
        errorIndex and varBinds[int(errorIndex) - 1][0] or '?')) 
else: 
    for varBind in varBinds: 
    print(' = '.join([repr(x) for x in varBind])) 

나는 루트 OID로 OID (1,3,6,1,4,1,12619,1,1)를 사용하는 경우 출력은 다음과 같습니다.

ObjectType(ObjectIdentity(ObjectName('1.3.6.1.4.1.12619.1.1.1.0')),OctetString('intel ICI101')) 
ObjectType(ObjectIdentity(ObjectName('1.3.6.1.4.1.12619.1.1.2.0')),OctetString('4.4.4')) 
ObjectType(ObjectIdentity(ObjectName('1.3.6.1.4.1.12619.1.1.3.0')), TimeTicks(10100333)) 
(ObjectIdentity(ObjectName('1.3.6.1.4.1.12619.1.2.1.0')), EndOfMibView()) 

정상 작동합니다. 문제는 내가 전체 MIB 트리를 원한다. 그래서 (1,3,6,1,4,1,12619,1) 루트 oid를 사용하고 싶다. 그러나 해당 OID를 사용하는 출력은 다음과 같습니다.

OIDs are not increasing 

어떻게이 작업을 수행 할 수 있습니까?

답변

0

ignoreNonIncreasingOid = 진정한

옵션이 작동했다으로 그 매개 변수를 추가.

varBinds = cmdGen.bulkCmd( 
     cmdgen.CommunityData('public', mpModel=0), 
     cmdgen.UdpTransportTarget(('192.168.0.90', 32150)), 
     0, 
     25, 
     (1,3,6,1,4,1,12619,1), 
     ignoreNonIncreasingOid = True 
    )