不正構文に基づいて特定のメッセージを否定する方法

不正構文に基づいて特定のメッセージを否定する方法

に基づいて特定のメッセージを読み取らないように否定を使用したいと思います$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

関連情報