我想使用否定来阻止某些消息在基于$rawmsg
.
消息例如:
(root) CMD (LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok)
我尝试过但不起作用:
if $rawmsg !contains '(root) CMD ' then ?wcc-logs
& stop
它涉及到上一篇文章
答案1
您需要正确地对表达式进行分组。在脚本中,您需要使用“not”而不是“!”。此外,not 必须位于要否定的表达式之前。所以正确的语法是
if not ($rawmsg contains '(root) CMD ') then {
?wcc-logs
stop
}
我使用括号只是为了澄清。我对 if 进行了一些现代化改造,以使用块语法,恕我直言,它更容易掌握。
关于脚本语法的文档:https://www.rsyslog.com/doc/v8-stable/rainerscript/index.html