Как получить объект Counter64 в pysnmp?

Я пытаюсь получить данные snmp, используя библиотеку pysnmp для python. В данных доступны некоторые объекты COUNTER64, которые не были извлечены.

команда -

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

вывод -

.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

используя 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]))

вывод -

No SNMP response received before timeout

Как я могу получить объекты COUNTER64? Я что-то упускаю?


person ketan    schedule 13.06.2017    source источник


Ответы (1)


Вы можете работать только со значениями Counter64 через SNMP версии 2c и 3. SNMP версии 1 не поддерживает это в соответствии с RFC.

Чтобы переключить pysnmp на SNMPv2c, просто установите mpModel=1 или отбросьте параметр mpModel, чтобы использовать pysnmp по умолчанию (то есть v2c).

Вот документ.

person Ilya Etingof    schedule 13.06.2017
comment
@IIya Etingof- значит, то, что я хочу, невозможно? потому что согласно команде snmpwalk -v 1 -c public ‹ip address›:‹port› xyz::pqr это версия 1. - person ketan; 13.06.2017
comment
@kit Попробуйте запустить snmpwalk -v1 -c public demo.snmplabs.com IF-MIB::ifXTable и сравните его с snmpwalk -v2c -c public demo.snmplabs.com IF-MIB::ifXTable. Правильный механизм SNMPv1 должен просто сбрасывать значения Counter64 при работе поверх SNMPv1. Похоже, это то, что делает snmpwalk. - person Ilya Etingof; 13.06.2017
comment
@IIya Etingof- В моем случае команда snmpwalk -v 1 -c public ‹ip address›:‹port› xyz::pqr не будет сбрасывать значения Counter64. Я могу получить все значения, только значения Counter64 не извлекаются. Есть ли другой способ сделать это, потому что в java мы можем установить SNMP4JSettings.setAllowSNMPv2InV1(true); свойство true для этого. - person ketan; 13.06.2017
comment
@kit Правильно, правильный механизм SNMPv1 должен отбрасывать значения Counter64, но оставлять значения других типов. Это то, что делают и Net-SNMP, и pysnmp, насколько я могу проводить свои эксперименты. Если я правильно понял ваш первоначальный вопрос, вы хотели получить значения Counter64 по SNMPv1. Это противоречит стандарту SNMP и, следовательно, не может работать с SNMP4J. - person Ilya Etingof; 13.06.2017
comment
@IIya Etingof- да, верно. Дайте мне знать, произойдет ли какое-либо улучшение в SNMPv1. - person ketan; 13.06.2017
comment
@kit SNMP v1 не изменится, но сегодня все используют SNMPv2c или v3. SNMPv1 в значительной степени устарел. - person Ilya Etingof; 13.06.2017
comment
@IIya Etingof- Хорошо. Спасибо за ваш опыт и важную информацию, которой вы делитесь. - person ketan; 13.06.2017