如何根据否定语法否定某些消息

如何根据否定语法否定某些消息

我想使用否定来阻止某些消息在基于$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

相关内容