Пакет ловушки приходит, но в коде возникают ошибки еще до того, как функция обратного вызова вызывается.
Все доступные обсуждения указывают на необходимость указания соответствующего EngineID, который у меня имеется — без изменений.
Ошибка:
Код: Выделить всё
File "/usr/local/lib/python3.9/site-packages/pysnmp/carrier/base.py", line 146, in _cbFun
raise error.CarrierError(
pysnmp.carrier.error.CarrierError: No callback for "None" found - losing incoming event
Код: Выделить всё
from pysnmp.hlapi import *
from pysnmp.carrier.asyncio.dispatch import AsyncioDispatcher
from pysnmp.carrier.asyncio.dgram import udp
from pyasn1.codec.ber import decoder
from pysnmp.proto import api
from pysnmp.proto import rfc1902
from pysnmp.entity import config
from pysnmp.smi import builder
from pysnmp.entity.rfc3413 import ntfrcv
snmpEngine = config.SnmpEngine()
config.addV3User(
snmpEngine,
"usertest",
config.USM_AUTH_NONE,
None,
config.USM_PRIV_NONE,
None,
securityEngineId = rfc1902.OctetString(hexValue='8000000001020304'),
)
# Callback function for handling incoming SNMP traps
def cbFun(snmpEngine, stateReference, contextEngineId, contextName, varBinds, cbCtx):
print("Made it to the callback")
transportDispatcher = AsyncioDispatcher()
ntfrcv.NotificationReceiver(snmpEngine, cbFun)
transportDispatcher.registerTransport(
udp.DOMAIN_NAME, udp.UdpAsyncioTransport().openServerMode(('192.168.120.56', 162))
)
transportDispatcher.jobStarted(1)
try:
transportDispatcher.runDispatcher()
except KeyboardInterrupt:
print("Shutting down...")
finally:
transportDispatcher.closeDispatcher()
Код: Выделить всё
sudo snmptrap -v 3 -u usertest -l noAuthNoPriv -e 0x8000000001020304 192.168.120.56 '' .1.3.6.1.4.1
Подробнее здесь: https://stackoverflow.com/questions/790 ... none-found