我在Python3中收到了SNMP陷阱消息,我得到了一个十六进制数字。
如何将其转换为String,以便我可以看到它?
收到的数据(十六进制)
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 \吨+ \ X06 \ X01 \ X06 \ X03 \ X01 \ X01 \ X05 \ X01'
这是我的SNMP陷阱接收器代码
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)
这是我的SNMP陷阱发件人代码
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()
答案 0 :(得分:2)
您的发送代码正确使用了一个库来为您进行所有编码/解码。
您的接收代码不正确。即使您将二进制数据重新解释为字符串,也无法理解它。这是一个SNMP PDU,其中包含很多美味的信息,您必须提取和解析这些信息。
正确的做法是获得一个SNMP库来为您解码,并提供一个很好的逻辑值来表示您收到的内容。 PySNMP已经具有此功能。 Here's an example.