如何使用 rsyslog.conf 将 Linux 中的身份验证相关消息发送到特定进程

如何使用 rsyslog.conf 将 Linux 中的身份验证相关消息发送到特定进程

在我的系统中,我正在运行 rsyslog 守护程序。我尝试配置 syslog.conf,将所有身份验证邮件发送到特定文件,使用以下行

auth.*;authpriv.*        /var/log/AuthLogs

它正在工作。现在我想将这些消息发送给一个进程。该进程将准备好捕获日志。以前我使用的是 syslogd 守护进程。在那里我能够使用下面的行发送日志

auth.*;authpriv.*        |exec /usr/bin/read.exe

但 rsyslogd 却无法正常工作。有人知道如何操作吗?

更新:这个问题尤其发生在python脚本中,例如代码:

#!/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()

我想通过 rsyslog 调用这个 python 代码。

答案1

我查了一下谷歌,发现了这个回答。我检查了示例并发现,对于您的情况,您应该将字符串更改为:

auth.*;authpriv.*        ^/usr/bin/read.exe

更新:我创建了仅包含的简单脚本echo $1 >> /var/log/tt.log。此后,我在日志文件中看到了传递给该脚本的所有消息。

答案2

取决于您是否要为匹配消息的每个实例调用外部程序(在这种情况下,'^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")

相关内容