繁体   English   中英

Python SNMP陷阱接收器

[英]Python SNMP Trap Receiver

我在Python3中收到SNMP陷阱消息,并且得到了一个十六进制数字。

如何将其转换为字符串以便可以看到?

接收数据(十六进制)

b'0E \\ x02 \\ x01 \\ x01 \\ x04 \\ x06404040 \\ xa78 \\ x02 \\ x04 \\ x00 \\ xf6 \\ x17〜\\ x02 \\ x01 \\ x00 \\ x02 \\ x01 \\ x000 * 0 \\ x0f \\ x06 \\ x08 \\ 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'

这是我的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()

您的发送代码正确使用一个库来为您执行所有编码/解码。

您的接收代码不正确。 即使您将二进制数据重新解释为字符串,也无法理解它。 这是一个SNMP PDU,其中包含很多美味的信息,您必须提取和解析这些信息。

正确的做法是获得一个SNMP库来为您解码,并提供一个很好的逻辑值来表示您收到的内容。 PySNMP已经具有此功能。 这是一个例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM