通过omprog(rsyslog模块)将命令行参数传递给shell脚本

时间:2015-12-07 15:47:35

标签: linux shell logging rsyslog

通过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中没有。 已经坚持了整整一天的问题,我们非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

据我所知rsyslog's documentation,二进制只是一个字面值,所以它不会针对rsyslog变量进行评估。二进制 - 您的程序/命令行 - 将通过stdin投放,当然您可以使用操作$msg参数更改该操作的模板以仅包含template