iptables
에서 까지 다음과 같은 로그 항목이 있다고 가정해 보겠습니다 syslog
.
Nov 3 12:04:12 mypc kernel: [ 296.274134] Packet: IN=enp0s9 OUT=enp0s8 MAC=08:00:27:2f:77:23:08:00:27:86:42:0e:08:00 SRC=192.168.2.20 DST=192.168.1.11 LEN=284 TOS=0x00 PREC=0x00 TTL=63 ID=61089 DF PROTO=TCP SPT=80 DPT=1335 WINDOW=32160 RES=0x00 ACK PSH URGP=0
여기서 " Packet:
"는 규칙으로 정의한 사용자 정의 로그 접두사입니다 iptables
.... -j LOG --log-prefix "Packet: "
질문: IN=enp0s9 <...> ACK PSH URGP=0
(전체 문자열을 의미합니다) 수정할 수 있습니까? 아니면 해체할 수 없는 전체 "메시지"입니까?
간단히 말해서 항목이 다음과 같기를 원합니다.
Nov 3 12:04:12 Packet: SRC=192.168.2.20 DST=192.168.1.11 LEN=284
추가 정보가 없습니다. 이것을 시스템 로그용 사용자 정의 템플릿으로 사용하고 싶습니다. 가능합니까? 안타깝게도 아직은 확실하지 않습니다시스템 로그 문서
답변1
당신은 그것을 사용할 수 있습니다부동산 대체품.
귀하 rsyslog.conf
또는 유사한 줄을 새 메시지에 대해 원하는 형식의 템플릿으로 정의하고 입력 줄을 일치시킬 때 작업에 사용합니다. 예를 들어,
$template myedit,"Packet: %msg:R,ERE,1,FIELD:Packet: .*?(SRC=.*LEN=[0-9]+).*--end%\n"
if ($msg contains "Packet: ") then {
action(type="omfile" file="/var/log/myedit.log" template="myedit")
}
템플릿 표현 템플릿 변수 myedit
는 정규식(R) 일치, 확장(ERE), 그룹 캡처 1(1) msg
(또는 일치하는 항목이 없는 경우 원래 필드 유지)로 대체된 속성을 포함하는 문자열입니다. 실제 정규 표현식은 이 Packet: .*?(SRC=.*LEN=[0-9]+).*
부분입니다. 이는 --end
시퀀스의 필수 부분입니다 %...:R,...--end%
. 전체 메시지를 이 템플릿으로 대체할 것이므로 마지막 개행 문자를 추가하세요.
다음 줄은 편집하려는 줄과 결과가 배치되는 위치에 대한 일반적인 Rainer 스크립트 테스트입니다.