, поэтому я пытаюсь получить ловушки, работающие в нашем проекте. Мы используем пользовательский MIB и ходить он уже работает, а также отправки ловушек без дополнительных данных отлично работает со следующим кодом и свойством объекта удален из ловушки в MIB:pysnmp 4.2.5 отправка ловушки с объектом не выполняется в sendPdu
def sendEventTrap(self, event):
if(doPrintTraps):
print "Sending trap"
ntfOrg = ntforg.NotificationOriginator(self._snmpContext)
errorIndication = ntfOrg.sendNotification(
self._snmpEngine,
'trap',
('PROJECT-MIB', 'eventTrap'),
())
Теперь я пытаюсь добавить простой Integer32 дополнительный объект как так
def sendEventTrap(self, event):
if(doPrintTraps):
print "Sending trap"
ntfOrg = ntforg.NotificationOriginator(self._snmpContext)
errorIndication = ntfOrg.sendNotification(
self._snmpEngine,
'trap',
('PROJECT-MIB', 'eventTrap'),
[((1, 3, 6, 1, 4, 1, 999999, 3, 1, 0) , v2c.Integer32(1337))])
Однако это не удается, хотя в соответствии со следующим зарегистрировать ее действительно найти и подобрать нужный OID с правильно связанным типом Integer32: http://pastebin.com/hJ9LAiAg
Это отношение часть MIB:
eventNotifications OBJECT IDENTIFIER ::= { xxx 4 }
eventTrap NOTIFICATION-TYPE
OBJECTS { direction }
STATUS current
DESCRIPTION ""
::= {eventNotifications 1}
ПРИМЕЧАНИЕ. Некоторые имена функций были изменены по соображениям конфиденциальности. Я нахожусь в затруднении здесь и очень ценю исходные данные о том, где все идет не так.
Я полагаю, является бы намного легче устранить эту проблему, если вы используете pysnmp 4.3. Помимо более чистого дизайна, исправлено множество ошибок. Кроме этого, убедитесь, что у вас есть объект snmpEngine, локальный для каждого потока, - все состояния хранятся в объекте snmpEngine, и внутренняя блокировка не выполняется. –
Удовлетворительная версия 4.2.5 - это то, что debian stable обеспечивает как дистрибутив, который я бы предпочел придерживаться. Является ли это совместимым с исходным кодом, хотя, по крайней мере, для родного API? Спасибо за наконечник snmpEngine, я должен проверить это. –
pysnmp 4.3 совместим с API с pysnmp 4.2.5 (для всех интерфейсов 4.2.5). Говоря о фрагменте кода, похоже, что исключение, которое вы видите, встречается в обработчике исключений при обработке исключения, вызванного sendPdu(). Поэтому трудно сказать, в чем причина первоначального исключения. Если вы включите больше возможностей отладки pysnmp, там появится исходное исключение ... –