Estoy tratando de escribir un oyente Syslog y hasta ahora estoy tan capacitado para que acepte mensajes entrantes a través de TCP, pero también deseo que UDP funcione.¿Cómo obtener un programa de socket UDP en Python para aceptar mensajes de un cliente Syslog?
Este es el código del servidor UDP que estoy usando, que funciona con una aplicación cliente python. También tengo otra aplicación que también funciona simplemente usando la aplicación de cliente de 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()
Usando este código puedo enviar al servidor y hacer que muestre el código.
# 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()
He intentado el registro del sistema generador de mensajes de kiwi y la caja para enviar mensajes de registro del sistema en el servidor de UDP y no aparece nada. ¿Alguien podría ayudarme a entender?
¿Está recibiendo un socket.error EPERM ("permiso denegado") en el servidor cuando se vincula al puerto 514? Si no, entonces notar que está ejecutando como root sería útil saber. Si no tiene permiso denegado, ¿está escuchando algún otro proceso en UDP/514? 'netstat -a' te dirá en Unix. – msw
Se ejecuta en mi máquina Ubuntu en otros puertos que no sean 514, syslogd probablemente tome el puerto 514. Pero en mi máquina con Windows funciona perfectamente. – Elvar
Acabo de intentar instalar el servidor Kiwi Syslog para probar el software del cliente. Funciona, cuando ingreso algo en la aplicación cliente, el servidor Kiwi lo recibe. – Elvar