让Python中的UDP套接字程序接收Syslog客户端消息?

9 投票
1 回答
12320 浏览
提问于 2025-04-15 21:45

我正在尝试写一个Syslog监听器,目前通过TCP接收消息的部分做得不错,但我也想让UDP能正常工作。

这是我正在使用的UDP服务器代码,它可以通过一个Python客户端应用正常工作。我还有另一个应用,也能仅通过这个Python客户端应用正常运行。

# Server program
# UDP VERSION


from socket import *

# Set the socket parameters
host = "localhost"
port = 514
buf = 1024
addr = (host,port)

# Create socket and bind to address
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)

# Receive messages
while 1:
    data,addr = UDPSock.recvfrom(buf)
    if not data:
        print "Client has exited!"
        break
    else:
        print "\nReceived message '", data,"'"

# Close socket
UDPSock.close()

使用这段代码,我可以向服务器发送消息,并让它显示出来。

# Client program

from socket import *

# Set the socket parameters
host = "localhost"
port = 514
buf = 1024
addr = (host,port)

# Create socket
UDPSock = socket(AF_INET,SOCK_DGRAM)

def_msg = "===Enter message to send to server===";
print "\n",def_msg

# Send messages
while (1):
    data = raw_input('>> ')
    if not data:
        break
    else:
        if(UDPSock.sendto(data,addr)):
            print "Sending message '",data,"'....."

# Close socket
UDPSock.close()

我尝试过使用Kiwi Syslog消息生成器和Snare来向UDP服务器发送syslog消息,但什么都没有显示。有人能帮我理解一下吗?

1 个回答

4

找到了问题,代码本身没问题,只是我用的 Kiwi Syslog 消息生成器出了点故障。和 Kiwi Syslog 服务器一起,有一个很棒的程序叫做 Log Forwarder,它的作用是把各种事件消息(比事件查看器提供的要多得多)转发到 syslog 服务器。这个程序还有一个测试功能……而且这个功能是好用的 :)

撰写回答