に基づいて特定のメッセージを読み取らないように否定を使用したいと思います$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
}
説明のために括弧を使用しています。 IMHOがマスターしやすいブロック構文を使用するようにifを近代化しました。
スクリプト構文のドキュメント:https://www.rsyslog.com/doc/v8-stable/rainerscript/index.html