pysnmp throwing UnknownCommunityName error

У меня есть файл pcap, содержащий 4 пакета ловушек SNMP. Когда я повторяю пакеты через pysnmp, он выдает ошибку как

DBG: StatusInformation: {'errorIndication': <pysnmp.proto.errind.UnknownCommunityName instance at 0x2023248>}

Я настроил PySNMP для приема пакетов с именем сообщества как public.

config.addV1System(snmpEngine, 'agent', 'public')

Когда я вижу пакет в WireShark, он показывает имя сообщества как общедоступное, но при отладке через PySNMP я обнаружил, что имя сообщества находится в OctetString (эквивалентно общедоступному в ASCII). Что мне теперь делать?

PS Unix snmptrapd работает правильно в данном файле pcap.

Версия Pysnmp: 4.3.1
Версия Pyasn1: 0.1.9

Редактировать Здесь полная трассировка стека в режиме отладки

2016-01-12_04:45:45.42174 2016-01-12 04:45:45,421 pysnmp: handle_read: transportAddress ('192.168.2.17', 162) -> ('0.0.0.0', 162) incomingMessage (70 octets) 
2016-01-12_04:45:45.42179 00000: 30 82 00 42 02 01 00 04 07 70 75 62 6C 69 63 00 
2016-01-12_04:45:45.42179 00016: A4 34 06 08 2B 06 01 04 01 90 7A 01 40 04 0A 62 
2016-01-12_04:45:45.42180 00032: 21 64 02 01 03 02 01 00 43 04 54 10 5A 06 30 16 
2016-01-12_04:45:45.42180 00048: 30 82 00 12 06 0D 2B 06 01 04 01 90 7A 01 02 01 
2016-01-12_04:45:45.42181 00064: 01 01 02 02 01 02
2016-01-12_04:45:45.42182 DEBUG: handle_read: transportAddress ('192.168.2.17', 162) -> ('0.0.0.0', 162) incomingMessage (70 octets) 
2016-01-12_04:45:45.42182 00000: 30 82 00 42 02 01 00 04 07 70 75 62 6C 69 63 00 
2016-01-12_04:45:45.42183 00016: A4 34 06 08 2B 06 01 04 01 90 7A 01 40 04 0A 62 
2016-01-12_04:45:45.42183 00032: 21 64 02 01 03 02 01 00 43 04 54 10 5A 06 30 16 
2016-01-12_04:45:45.42183 00048: 30 82 00 12 06 0D 2B 06 01 04 01 90 7A 01 02 01 
2016-01-12_04:45:45.42184 00064: 01 01 02 02 01 02
2016-01-12_04:45:45.42369 2016-01-12 04:45:45,423 pysnmp: receiveMessage: msgVersion 0, msg decoded
2016-01-12_04:45:45.42381 DEBUG: receiveMessage: msgVersion 0, msg decoded
2016-01-12_04:45:45.42587 2016-01-12 04:45:45,425 pysnmp: prepareDataElements: Message:
2016-01-12_04:45:45.42598  version='version-1'
2016-01-12_04:45:45.42606  community=0x7075626c696300
2016-01-12_04:45:45.42614  data=PDUs:
2016-01-12_04:45:45.42621   trap=TrapPDU:
2016-01-12_04:45:45.42628    enterprise=1.3.6.1.4.1.2170.1
2016-01-12_04:45:45.42636    agent-addr=NetworkAddress:
2016-01-12_04:45:45.42643     internet=10.98.33.100
2016-01-12_04:45:45.42650 
2016-01-12_04:45:45.42657    generic-trap='linkUp'
2016-01-12_04:45:45.42664    specific-trap=0
2016-01-12_04:45:45.42673    time-stamp=1410357766
2016-01-12_04:45:45.42683    variable-bindings=VarBindList:
2016-01-12_04:45:45.42685     VarBind:
2016-01-12_04:45:45.42685      name=1.3.6.1.4.1.2170.1.2.1.1.1.2
2016-01-12_04:45:45.42686      value=ObjectSyntax:
2016-01-12_04:45:45.42686       simple=SimpleSyntax:
2016-01-12_04:45:45.42686        number=2
2016-01-12_04:45:45.42687 
2016-01-12_04:45:45.42687 
2016-01-12_04:45:45.42688 
2016-01-12_04:45:45.42688 
2016-01-12_04:45:45.42689 
2016-01-12_04:45:45.42697 
2016-01-12_04:45:45.42697 DEBUG: prepareDataElements: Message:
2016-01-12_04:45:45.42698  version='version-1'
2016-01-12_04:45:45.42698  community=0x7075626c696300
2016-01-12_04:45:45.42699  data=PDUs:
2016-01-12_04:45:45.42699   trap=TrapPDU:
2016-01-12_04:45:45.42699    enterprise=1.3.6.1.4.1.2170.1
2016-01-12_04:45:45.42700    agent-addr=NetworkAddress:
2016-01-12_04:45:45.42700     internet=10.98.33.100
2016-01-12_04:45:45.42701 
2016-01-12_04:45:45.42701    generic-trap='linkUp'
2016-01-12_04:45:45.42701    specific-trap=0
2016-01-12_04:45:45.42702    time-stamp=1410357766
2016-01-12_04:45:45.42702    variable-bindings=VarBindList:
2016-01-12_04:45:45.42703     VarBind:
2016-01-12_04:45:45.42703      name=1.3.6.1.4.1.2170.1.2.1.1.1.2
2016-01-12_04:45:45.42710      value=ObjectSyntax:
2016-01-12_04:45:45.42720       simple=SimpleSyntax:
2016-01-12_04:45:45.42720        number=2
2016-01-12_04:45:45.42721 
2016-01-12_04:45:45.42721 
2016-01-12_04:45:45.42721 
2016-01-12_04:45:45.42722 
2016-01-12_04:45:45.42722 
2016-01-12_04:45:45.42723 
2016-01-12_04:45:45.42724 2016-01-12 04:45:45,426 pysnmp: StatusInformation: {'errorIndication': <pysnmp.proto.errind.UnknownCommunityName instance at 0x2ce9680>}
2016-01-12_04:45:45.42731 DEBUG: StatusInformation: {'errorIndication': <pysnmp.proto.errind.UnknownCommunityName instance at 0x2ce9680>}
2016-01-12_04:45:45.42734 2016-01-12 04:45:45,426 pysnmp: StatusInformation: {'errorIndication': <pysnmp.proto.errind.UnknownCommunityName instance at 0x2ce9680>}
2016-01-12_04:45:45.42735 DEBUG: StatusInformation: {'errorIndication': <pysnmp.proto.errind.UnknownCommunityName instance at 0x2ce9680>}

Проблема существует только для одного агента. Ловушки, поступающие от всех других агентов, обрабатываются нормально.

1 ответ

Решение

По-видимому, когда вы создаете PDU из выгруженного (?) Пакета, вы включаете конечный ноль в значение строки сообщества SNMP.

>>> from pysnmp.proto.rfc1902 import *
>>> OctetString(hexValue='7075626c696300').asOctets()
'public\x00'

Если это то, что вы хотите, убедитесь, что настроили pysnmp соответственно.

config.addV1System(snmpEngine, 'agent', 'public\x00')

или же

config.addV1System(snmpEngine, 'agent', OctetString(hexValue='7075626c696300'))
Другие вопросы по тегам