Fico perplexo com o motivo pelo qual não consigo que o rsyslog registre os dados enviados via TCP sempre que envio os dados com um script Python, mas funciona perfeitamente se eu enviar a mesma string via netcat
O Rsyslog está configurado para receber dados do syslog no 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 reiniciado. Executou este comando da máquina do cliente:
[root@localhost ~]# echo HELLO2 |nc logbox 514
Conteúdo do /tmp/.log
Nov 18 15:36:16 HELLO2
Então o rsyslog está funcionando como esperado. Agora, quando tento fazer a mesma coisa no Python, a mensagem nunca é gravada no arquivo.
#! /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()
Rodando o tcpdump na logbox, posso ver a configuração da sessão, a string transmitida e a sessão encerrada no TCP, mas o "hello world" nunca aparece no arquivo de log. O que estou perdendo aqui?