1

ログファイルに含まれるすべての行を検索するには、bashファイルを作成する必要があります

Aug  9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=1.1.1.1 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9690 DF PROTO=TCP SPT=601 DPT=12500 LEN=13
Aug  9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=2.2.2.2 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9689 DF PROTO=TCP SPT=602 DPT=12502 LEN=13
Aug  9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=3.3.3.3 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9691 DF PROTO=TCP SPT=600 DPT=12503 LEN=13
Aug  9 16:11:46 igs kernel: [ATTS] Caution: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=1.1.1.1 DST=192.168.0.100 LEN=33 TOS=0x00 PREC=0x00 TTL=121 ID=9691 DF PROTO=TCP SPT=600 DPT=12503 LEN=13

次に、「SRC =」でIPを抽出し、「ip.list」という名前の外部ファイルにIPを保存しますが、同じIPを繰り返さないでください

ip.listの出力例

1.1.1.1
2.2.2.2
3.3.3.3
4

3 に答える 3

4

あなたはこれのためawkにそしてsortこれのために使うことができます:

awk '/Caution: IN=/ {print substr($11,5)}' infile | sort -u

検索文字列を希望どおりに調整するだけです(私は使用しました"Caution: IN=")。

awk検索文字列に一致するすべてのライムについて"SRC=aaa.bbb.ccc.ddd"、5番目の文字(IPアドレスの最初の桁)から11番目の引数()を出力します。

次に、その出力が渡されsort -u、最初にソートされてから重複行が削除されます。

出力はあなたが期待するものです:

pax> awk '/Caution: IN=/ {print substr($11,5)}' infile | sort -u
1.1.1.1
2.2.2.2
3.3.3.3
于 2012-08-10T08:01:34.437 に答える
1

sedまたそれを行うことができます:

 sed 's/.*SRC=\([0-9.]\+\).*/\1/' infile | sort -u
于 2012-08-10T08:12:18.680 に答える
0

またはと:grep_coreutils

grep Caution: logfile | cut -d= -f5 | cut -d' ' -f1 | sort -u
于 2012-08-10T09:10:35.247 に答える