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: "
Q:(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スクリプトテストです。