Rsyslog - audit.log/omprog 変更ログ値の解析

Rsyslog - audit.log/omprog 変更ログ値の解析

proctitleの16進部分をasciiに変換するために、rsyslogを使用してaudit.logを解析するbashスクリプトを使用しようとしています。しかし、結果はありません。 audit_ascii.logファイルに "proctitle"値を含む行はありません。私はスクリプトをテストしましたが、うまく動作するので、問題は私のrsyslog.confで発生したようです。

rsyslog.conf:

$InputFileName /var/log/audit/audit.log
$InputFileTag tag_auditd:
$InputFileStateFile log_audit
$InputFileSeverity info
$InputFileFacility local6
$InputRunFileMonitor

if $msg contains "msg=audit" then {
action(type="omprog" binary="/bin/bash /opt/bin/hex2ascii.sh" output="/var/log/audit/audit_ascii.log")

16進数2ascii

    #!/bin/bash
    read log
    
    hasHex=$(echo $log | egrep "msg=audit" | egrep "type=PROCTITLE" | egrep -v '"' | wc -c)
    
    if [ ${hasHex} -gt 0 ];
    then
        part1=$(echo $log | cut -d"=" -f1-3)
    
        part2=$(echo $log | cut -d"=" -f4)
        part2=$(echo $part2 | xxd -r -p )
        echo $part1 >> /var/log/audit/verif.txt 
        #echo "${part1}=${part2}\n" >> /var/log/audit/audit_ascii.log
        log="${part1}=${part2}\n"
    #else
        #echo $log >> /var/log/audit/audit_ascii.log
            
    fi

答え1

rsyslogには複数の組み込みモジュールがありますが、その一部は組み込まれておらず、使用する前にロードする必要があります。

使用しているモジュールimfileの前には、次の行が必要です(前の構文から):

$ModLoad imfile

同じ、オフログモジュール、最新の構文を使用する場合は必須

module(load="omprog")

ステートメントで使用される前にif(結論が不足している})あなたがそれから得るエラーメッセージを見てくださいrsyslogd -N 1

答え2

スクリプトが変更されたログを別のファイルにリダイレクトした後、プロセスを停止します。次に、新しいファイルをrsyslogの他の入力に渡します。私が見つけた最高のソリューション

関連情報