Python SNMP Trap Receiver
Your sending code correctly uses a library to do all the encoding/decoding for you.
Your receiving code does not. Even if you were to reinterpret the binary data as a string, you wouldn't be able to make much sense of it. It is an SNMP PDU with lots of delicious information in it that you'd have to extract and parse.
The proper thing to do is get an SNMP library to decode it for you and provide a nice logical value representing what you've received. PySNMP has this facility already. Here's an example.
Related videos on Youtube
강동인
Updated on June 14, 2022Comments
-
강동인 almost 2 years
I received an SNMP trap message in Python3, and I got a hexadecimal number.
How do I convert it to a String so I can see it?
Received Data(Hex)
b'0E\x02\x01\x01\x04\x06404040\xa78\x02\x04\x00\xf6\x17~\x02\x01\x00\x02\x01\x000*0\x0f\x06\x08+\x06\x01\x02\x01\x01\x03\x00C\x03\x01k+0\x17\x06\n+\x06\x01\x06\x03\x01\x01\x04\x01\x00\x06\t+\x06\x01\x06\x03\x01\x01\x05\x01'
This is my SNMP trap receiver code
import socket import sys port = 162 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind(("", port)) while 1: data, addr = s.recvfrom(4048) print(data)
This is my SNMP trap Sender code
from pysnmp.hlapi.asyncore import * snmpEngine = SnmpEngine() sendNotification( snmpEngine, CommunityData('404040'), UdpTransportTarget(('192.168.0.160', 162)), ContextData(), 'trap', NotificationType(ObjectIdentity('SNMPv2-MIB', 'coldStart')), ) snmpEngine.transportDispatcher.runDispatcher()
-
Jolta over 6 yearsYou don't want to be doing this decoding yourself. Pysnmp already has functions to do it for you. Please see for example this question for an example: stackoverflow.com/questions/33752602/listen-traps-with-pysnmp
-
Lightness Races in Orbit over 5 yearsThe Python tag is appropriate; please leave it on.
-