我很困惑,为什么我不能让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”永远不会显示在日志文件中。 我在这里错过了什么?