Я сбит с толку, почему я не могу заставить rsyslog регистрировать данные, отправленные ему через TCP, всякий раз, когда я отправляю данные с помощью скрипта Python, но отлично работает, если я отправляю ту же строку через 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» никогда не отображается в файле журнала. Что мне здесь не хватает?