Linux 从文件外壳脚本获取子字符串
我需要一些关于这个shell脚本的帮助。我有一个变量,表示IP/TCP头。我需要按选定的标题筛选流量捕获Linux 从文件外壳脚本获取子字符串,linux,shell,grep,Linux,Shell,Grep,我需要一些关于这个shell脚本的帮助。我有一个变量,表示IP/TCP头。我需要按选定的标题筛选流量捕获 > var=ttl 128 > > tcpdump -Xvv -n -i eth0 -c 300 > capture.txt 2>/dev/null > > grep -i "$var" capture.txt > resultGrep.txt tcpdump命令的结果如下 15:29:18.164566 IP (tos 0x0, ttl
> var=ttl 128
>
> tcpdump -Xvv -n -i eth0 -c 300 > capture.txt 2>/dev/null
>
> 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 ..............
我需要有ip地址源和ip地址目的地,在示例中,输出结果必须是
10.0.0.131.58363>239.255.255.250.1900我对这个问题的理解是,您想从
resultGrep.txt
中提取内容,而不是capture.txt
然后:
参见测试:
kent$ echo "15:29:18.164566 IP (tos 0x0, ttl 1, id 2394, offset 0, flags [none], proto UDP (17), length 125)
dquote> 10.0.0.131.58363 > 239.255.255.250.1900: UDP, length 97
dquote> 0x0000: 4600 0024 0000 0000 0102 3ad3 0a00 0000 F..$......:.....
dquote> 0x0010: e000 0001 9404 0000 1101 ebfe 0000 0000 ................
dquote> 0x0020: 0300 0000 0000 0000 0000 0000 0000 .............."|grep -oP '[\d\.]*\s*>\s*[\d\.]*'
10.0.0.131.58363 > 239.255.255.250.1900
我对这个问题的理解是,您想从
resultGrep.txt
中提取内容,而不是capture.txt
然后:
参见测试:
kent$ echo "15:29:18.164566 IP (tos 0x0, ttl 1, id 2394, offset 0, flags [none], proto UDP (17), length 125)
dquote> 10.0.0.131.58363 > 239.255.255.250.1900: UDP, length 97
dquote> 0x0000: 4600 0024 0000 0000 0102 3ad3 0a00 0000 F..$......:.....
dquote> 0x0010: e000 0001 9404 0000 1101 ebfe 0000 0000 ................
dquote> 0x0020: 0300 0000 0000 0000 0000 0000 0000 .............."|grep -oP '[\d\.]*\s*>\s*[\d\.]*'
10.0.0.131.58363 > 239.255.255.250.1900
在
tcpdump
上的Unix管道中直接尝试执行此操作:
tcpdump -Xvv -n -i eth0 -c 300 |
grep -oP "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,5}\s+>\s+\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,5}"
这是坚如磐石的;) 尝试直接在Unix管道中通过tcpdump
执行此操作:
tcpdump -Xvv -n -i eth0 -c 300 |
grep -oP "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,5}\s+>\s+\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,5}"
这是坚如磐石的;) 这是伟大的sputnick,但我需要在ttl 128之前进行过滤。你明白我的意思吗?那是很棒的斯普尼克,但我需要在TTL128上安装过滤器。你明白我的意思吗?