Назад | Перейти на главную страницу

Сокет TCP Python и системный журнал

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