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
。