庆典提取IP并保存到内线文本文件
问题描述:
我需要创建一个bash文件中搜索所有线路中的日志文件中包含该庆典提取IP并保存到内线文本文件
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
然后将解压后IP中的“SRC =”并保存将IP与名称“ip.list”外部文件而不是重复相同的IP
例输出ip.list
1.1.1.1
2.2.2.2
3.3.3.3
答
sed
也可以这样做:
sed 's/.*SRC=\([0-9.]\+\).*/\1/' infile | sort -u
答
您可以使用此awk
和sort
:
awk '/Caution: IN=/ {print substr($11,5)}' infile | sort -u
只是调整搜索字符串是你想要的(我已经使用"Caution: IN="
)。
什么awk
所做的是,对于每一个石灰匹配所搜索的字符串,它打印出的第五个字符开始第十一参数("SRC=aaa.bbb.ccc.ddd"
)(IP地址的第一位)。
然后,输出通过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
答
或用grep
和coreutils
:
grep Caution: logfile | cut -d= -f5 | cut -d' ' -f1 | sort -u