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의 다른 입력으로 전달합니다. 내가 찾은 최고의 솔루션