通过rsyslog module omprog将系统日志消息作为命令行参数传递给shell脚本时出现错误。
我的/etc/rsyslog.conf:
module(load="omprog")
if $syslogtag contains 'user'
then action(type="omprog" binary="/usr/bin/test")
我的/ usr / bin / test:
#!/bin/sh
printf "\n$(date): $1" >> /home/user/sink
正在运行
logger qqq
我在/ var / log / messages中获取'qqq',在/ home / user / sink中获得当前时间戳。
运行时
/usr/bin/test some_message
我进入/ home / user / sink当前时间戳和'some_message'。但是只要我将/etc/rsyslog.conf中的动作字符串修改为
任
then action(type="omprog" binary="/usr/bin/test some_message")
或
then action(type="omprog" binary="/usr/bin/test \"$msg\"")
我在系统日志中获取了logger参数,但在/ home / user / sink中没有。 已经坚持了整整一天的问题,我们非常感谢任何帮助。
答案 0 :(得分:0)
据我所知rsyslog's documentation,二进制只是一个字面值,所以它不会针对rsyslog变量进行评估。二进制 - 您的程序/命令行 - 将通过stdin
投放,当然您可以使用操作$msg
参数更改该操作的模板以仅包含template
。