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

おすすめ記事