Python TCP 套接字和 syslog

Python TCP 套接字和 syslog

我很困惑为什么当我使用 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”从未出现在日志文件中。我在这里遗漏了什么?

相关内容