【发布时间】:2016-03-12 07:04:09
【问题描述】:
通过 rsyslog 模块 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 中没有。 已经在这个问题上停留了一整天,非常感谢任何帮助。
【问题讨论】:
标签: linux shell logging rsyslog