2017-06-13 2 views
0

J'essaie d'obtenir des données snmp en utilisant la bibliothèque pysnmp de python. Dans les données, certains objets COUNTER64 sont disponibles et n'ont pas été récupérés.Comment faire pour récupérer l'objet Counter64 dans pysnmp?

commande -

snmpwalk -v 1 -c public <ip address>:<port> xyz::pqr 

sortie -

.1.3.6.1.4.1.16136.13.5.1.200.1.51.1.12.1 = Counter64: 2761552407 
.1.3.6.1.4.1.16136.13.5.1.200.1.51.1.12.2 = Counter64: 0 
.1.3.6.1.4.1.16136.13.5.1.200.1.51.1.12.3 = Counter64: 0 
.1.3.6.1.4.1.16136.13.5.1.200.1.51.1.13.1 = Counter64: 2299496 
.1.3.6.1.4.1.16136.13.5.1.200.1.51.1.13.2 = Counter64: 0 
.1.3.6.1.4.1.16136.13.5.1.200.1.51.1.13.3 = Counter64: 0 

utilisant pysnmp -

from pysnmp.hlapi import * 

for (errorIndication, 
    errorStatus, 
    errorIndex, 
    varBinds) in nextCmd(SnmpEngine(), 
          CommunityData('public', mpModel=0), 
          UdpTransportTarget(('ip', port)), 
          ContextData(), 
          ObjectType(ObjectIdentity('.1.3.6.1.4.1.16136.13.5.1.200.1.51.1.12'))): 
    if errorIndication or errorStatus: 
     print(errorIndication or errorStatus) 
     break 
    else: 
     for varBind in varBinds: 
      print(' = '.join([x.prettyPrint() for x in varBind])) 

sortie -

No SNMP response received before timeout 

Comment je peux récupérer des objets Counter64? Est-ce qu'il me manque quelque chose?

Répondre

1

Vous ne pouvez travailler qu'avec des valeurs Counter64 sur SNMP version 2c et 3. SNMP version 1 ne prend pas en charge cela selon les RFC.

Pour basculer pysnmp dans SNMPv2c, il suffit de définir mpModel=1 ou de supprimer le paramètre mpModel pour créer pysnmp en utilisant la valeur par défaut (qui est v2c). Il s'agit du doc.

+0

@IIya Etingof- cela signifie que ce que je veux n'est pas possible? parce que selon ** snmpwalk -v 1 -c public : xyz :: pqr ** command c'est la version 1. – kit

+0

@kit Essayez d'exécuter 'snmpwalk -v1 -c public demo.snmplabs.com IF-MIB :: ifXTable 'et comparez-le avec' snmpwalk -v2c -c public demo.snmplabs.com IF-MIB :: ifXTable'. Le moteur SNMPv1 correct devrait simplement laisser tomber les valeurs Counter64 lors de l'exécution sur SNMPv1. Il semble que c'est ce que fait snmpwalk. –

+0

@IIya Etingof- Dans mon cas, snmpwalk -v 1 -c public : La commande xyz :: pqr ne supprimera pas les valeurs Counter64. Je suis capable de récupérer toutes les valeurs, seules les valeurs Counter64 ne sont pas récupérées. Est-ce une autre façon de le faire parce qu'en Java, nous pouvons définir SNMP4JSettings.setAllowSNMPv2InV1 (true); propriété à vrai pour cela. – kit