我很困惑为什么当我使用 Python 脚本发送数据时,rsyslog 无法记录通过 TCP 发送给它的数据,但如果我通过 netcat 发送相同的字符串,它就可以正常工作
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()
在日志框上运行 tcpdump,我可以看到会话设置、传输的字符串和 TCP 中的会话关闭,但“hello world”从未出现在日志文件中。我在这里遗漏了什么?