Python TCP套接字和syslog

我很困惑,为什么我不能让rsysloglogging通过TCP发送给它的数据,只要我用Python脚本发送数据,但是如果我通过netcat发送相同的string

Rsyslog设置为接收TCP / 514上的系统日志数据:/etc/rsyslog.conf

$ModLoad imtcp $InputTCPServerRun 514 

/etc/rsyslog.d/LogByIP.conf

 $template LogByIP,"/tmp/%fromhost-ip%.log" if ($fromhost-ip != '127.0.0.1') then ?LogByIP 

重新启动rsyslog。 从客户端机器执行此命令:

 [root@localhost ~]# echo HELLO2 |nc logbox 514 

/tmp/.log的内容

 Nov 18 15:36:16 HELLO2 

所以rsyslog正在按预期工作。 现在,当我尝试在Python中做同样的事情时,消息永远不会写入文件。

 #! /usr/bin/python import socket host='logbox' port=514 message='hello world' s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((host,port)) s.sendall(message) s.close() 

在logbox上运行tcpdump,我可以看到会话设置,传输的string和会话在TCP中closures,但是“hello world”永远不会显示在日志文件中。 我在这里错过了什么?