부정 구문을 기반으로 특정 메시지를 부정하는 방법

부정 구문을 기반으로 특정 메시지를 부정하는 방법

를 기반으로 특정 메시지를 읽지 못하도록 부정을 사용하고 싶습니다 $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

관련 정보