Python SNMP陷阱接收器

时间:2018-01-16 06:29:20

标签: python snmp pysnmp snmp-trap

我在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()

1 个答案:

答案 0 :(得分:2)

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

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

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