【问题标题】:Python SNMP Trap ReceiverPython SNMP 陷阱接收器
【发布时间】:2018-06-24 19:21:57
【问题描述】:

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

【问题讨论】:

标签: python snmp pysnmp snmp-trap


【解决方案1】:

您的发送代码正确地使用库为您完成所有编码/解码。

您的接收代码没有。即使您将二进制数据重新解释为字符串,您也无法理解它。它是一个 SNMP PDU,其中包含许多您必须提取和解析的有用信息。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多