Я могу отправить команду snmptrap (net-snmp-utils) из оболочки, эквивалентную -
snmptrap -v2c -c public myhostname.com '' .1.3.6.1.4.1.1234.7.0.1 .1.3.6.1.4.1.1234.7.1 s desktop 1.3.6.1.4.1.1234.7.2 s "TESTING" .1.3.6.1.4.1.1234.7.3 s CODE
Я пытаюсь сделать то же самое через python3. Сообщения ловушки, отправленные из сценария, принимаются и обрабатываются сервером / агентом / менеджером. Однако те из python (код и выходные данные вставлены ниже) не достигают сервера.
До сих пор я использовал pysnmp
from pysnmp import debug
debug.setLogger(debug.Debug('msgproc'))
from pysnmp.hlapi.asyncore import *
next(sendNotification(
SnmpEngine(),
CommunityData('public', mpModel=1),
UdpTransportTarget(('myhostname.com', 162)),
ContextData(),
'trap',
NotificationType(
ObjectIdentity('1.3.6.1.6.3.1.1.5.2')
).addVarBinds(
( '1.3.6.1.6.3.1.1.4.3.0', '.1.3.6.1.4.1.1234.7.0.1'),
('.1.3.6.1.4.1.1234.7.1', OctetString('desktop')),
('1.3.6.1.4.1.1234.7.2', OctetString('TESTING')),
('.1.3.6.1.4.1.1234.7.3', OctetString('CODE'))
)
))
Выход
2019-05-03 12: 16: 02,881 pysnmp: StatusInformation: {'errorIndication': AccessAllowed ()}
2019-05-03 12: 16: 02,884 pysnmp: StatusInformation: {'errorIndication': AccessAllowed ()}
2019-05-03 12: 16: 02,886 pysnmp: StatusInformation: {'errorIndication': AccessAllowed ()}
2019-05-03 12: 16: 02,891 pysnmp: StatusInformation: {'errorIndication': AccessAllowed ()}
2019-05-03 12: 16: 02,899 pysnmp: prepareOutgoingMessage: использование contextEngineId subtypeSpec,> кодировка iso-885
9-1 полезная нагрузка [0x80004fb805c3c8cf48]> contextName b ''
2019-05-03 12: 16: 02,904 pysnmp: generateRequestMsg: Сообщение:
version=1
community=public
data=PDUs:
snmpV2-trap=SNMPv2TrapPDU:
request-id=10163951
error-status=noError
error-index=0
variable-bindings=VarBindList:
VarBind:
name=1.3.6.1.2.1.1.3.0
=_BindValue:
value=ObjectSyntax:
application-wide=ApplicationSyntax:
timeticks-value=0
VarBind:
name=1.3.6.1.6.3.1.1.4.1.0
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
objectID-value=1.3.6.1.6.3.1.1.5.2
VarBind:
name=1.3.6.1.6.3.1.1.4.3.0
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
objectID-value=1.3.6.1.4.1.1234.7.0.1
VarBind:
name=1.3.6.1.4.1.1234.7.1
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
string-value=desktop
VarBind:
name=1.3.6.1.4.1.1234.7.2
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
string-value=TESTING
VarBind:
name=1.3.6.1.4.1.1234.7.3
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
string-value=CODE
При добавлении 'io' к отладчику я получаю это в конце - это стандартное сообщение или это означает, что сообщение было поставлено в очередь и не ушло?
2019-05-06 04: 55: 42,914 pysnmp: sendMessage: в очереди исходящее сообщение (164 октета)
00000: 30 81 A1 02 01 01 04 06 70 75 62 6C 69 63 A7 81