我需要一些关于这个shell脚本的帮助。我有一个变量,代表一个IP / TCP头。我需要通过选中的标题过滤流量捕获。
> var=ttl 128 (only TTL=128)
>
> tcpdump -Xvv -n -i eth0 -c 300 > capture.txt 2>/dev/null
>
我正在尝试使用grep命令,但只有ttl 128的行,不要ip源和目的地
> grep -i "$var" capture.txt > resultGrep.txt
tcpdump命令的结果有点像这样
15:29:18.164566 IP (tos 0x0, ttl 1, id 2394, offset 0, flags [none], proto UDP (17), length 125)
10.0.0.155.58363 > 239.255.255.254.1900: UDP, length 97
0x0000: 4600 0024 0000 0000 0102 3ad3 0a00 0000 F..$......:.....
0x0010: e000 0001 9404 0000 1101 ebfe 0000 0000 ................
0x0020: 0300 0000 0000 0000 0000 0000 0000 ..............
15:29:18.164566 IP (tos 0x0, ttl 128, id 2394, offset 0, flags [none], proto UDP (17), length 125)
10.0.0.131.58363 > 239.255.255.250.1900: UDP, length 97
0x0000: 4600 0024 0000 0000 0102 3ad3 0a00 0000 F..$......:.....
0x0010: e000 0001 9404 0000 1101 ebfe 0000 0000 ................
0x0020: 0300 0000 0000 0000 0000 0000 0000 ..............
15:29:18.164566 IP (tos 0x0, ttl 64, id 2394, offset 0, flags [none], proto UDP (17), length 125)
10.0.0.147.58363 > 239.255.255.255.1900: UDP, length 97
0x0000: 4600 0024 0000 0000 0102 3ad3 0a00 0000 F..$......:.....
0x0010: e000 0001 9404 0000 1101 ebfe 0000 0000 ................
0x0020: 0300 0000 0000 0000 0000 0000 0000 ..............
我需要从包含ttl 128标头的数据包中获取ip地址源和ip地址目的地,在示例中输出结果必须是
10.0.0.131.58363> 239.255.255.250.1900
答案 0 :(得分:0)
如果您的grep
支持显示上下文-A
,则可以尝试
grep -A 1 -e 'ttl 128' capture.txt | grep '^ ' | cut -d: -f1
第一个grep显示所有行ttl 128
加上一行。第二个grep过滤以空白开头的行。最终cut
会在第一个:
之前选择所有内容。