簡體   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