В моей системе запущен демон rsyslog. Я попытался настроить syslog.conf для отправки всей аутентификационной почты в конкретный файл, используя строку
auth.*;authpriv.* /var/log/AuthLogs
это работает. Теперь я хочу отправить эти сообщения процессу. Процесс будет готов к захвату журналов. раньше я использовал демон syslogd. В этом случае я смог отправить журнал, используя строку ниже
auth.*;authpriv.* |exec /usr/bin/read.exe
Но то же самое не работает с rsyslogd. Кто-нибудь знает, как это сделать?
ОБНОВИТЬ: В частности, эта проблема возникает со сценариями python ex code:
#!/usr/local/bin/python
import sys
import fcntl, os
message = sys.stdin.readline() # Read what's waiting, in one go
if not message:
print "nothing in message\n"
fd = open('/tmp/testrsyslogomoutput1.txt', 'a')
fd.write("Receiving log message : \n%s\n" % (message))
fd.close()
Этот код Python, который я хочу вызвать через rsyslog.
Зависит от того, хотите ли вы вызывать внешнюю программу для каждого экземпляра совпадающего сообщения (в этом случае функция `^ command 'должна работать, если вы получаете сообщение журнала в качестве параметра).
Если вы хотите передать все совпадающие сообщения на стандартный ввод длительной программы, я думаю, вам нужна функциональность rsyslog `omprog '. Видеть http://www.rsyslog.com/doc/v8-stable/configuration/modules/omprog.html для получения полной информации. Пример конфигурации (с той страницы) ...
module(load="omprog")
action(type="omprog"
binary="/pathto/omprog.py --parm1=\"value 1\" --parm2=\"value2\""
template="RSYSLOG_TraditionalFileFormat")
Я проверил Google и нашел это ответ. Я проверил пример и обнаружил, что в вашем случае вам следует изменить строку на:
auth.*;authpriv.* ^/usr/bin/read.exe
Обновить: Я создал простой скрипт, содержащий только echo $1 >> /var/log/tt.log
. После этого я вижу в файле журнала все сообщения, переданные этому скрипту.