使用带有bash的pcap拆分器拆分大尺寸wireshark
我有大的pcapng文件,我想根据我想要的wireshark过滤器来分割它们。我想通过bash脚本和使用来分割文件,但是当我使用循环时,它总是给我相同的文件 我已经写了一个小代码使用带有bash的pcap拆分器拆分大尺寸wireshark,bash,wireshark,pcap,Bash,Wireshark,Pcap,我有大的pcapng文件,我想根据我想要的wireshark过滤器来分割它们。我想通过bash脚本和使用来分割文件,但是当我使用循环时,它总是给我相同的文件 我已经写了一个小代码 #!/bin/bash 对于{57201..57206}中的i 做 mkdir目的地/$i 完成 tcp=“tcp端口” 对于{57201..57206}中的i 做 tcp=“$tcp$i” pcapsplitter-f file.pcapng-o destination/$i-m bpf filter-p$tcp
#!/bin/bash
对于{57201..57206}中的i
做
mkdir目的地/$i
完成
tcp=“tcp端口”
对于{57201..57206}中的i
做
tcp=“$tcp$i”
pcapsplitter-f file.pcapng-o destination/$i-m bpf filter-p$tcp
完成
问题是,我是否可以使用bash实现我的目标?
如果是,为什么不起作用 毫无疑问,这是Bash可以做到的 关于你的剧本,我能想到的第一句话是:
pcapsplitter -f file.pcapng -o destination/$i -m bpf-filter -p $tcp
其中,$tcp
的值实际上是tcp端口57201
(并在下一轮中跟随数字。但是,如果没有引号,则实际上只将tcp
传递给-p
参数
将此行更改为以下内容后,它应该会工作得更好:
pcapsplitter -f file.pcapng -o destination/$i -m bpf-filter -p "$tcp"
注意:一般来说,在Bash中双引号引用变量通常更安全
NB2:你不需要这2个循环。以下是我如何重写你的脚本:
#!/bin/bash
for portNumber in {57201..57206}; do
destinationDirectory="destination/$portNumber"
mkdir "$destinationDirectory"
thePparameter="tcp port $portNumber"
pcapsplitter -f 'file.pcapng' -o "$destinationDirectory" -m bpf-filter -p "$thePparameter"
done
非常感谢你,它节省了我很多时间。使用``真的帮了我很大的忙。我还纠正了我使用2表示循环的愚蠢方法;)。如果其他人阅读了此评论,我还建议使用rm
命令删除额外的文件,并使用mv
重命名所需的文件。这样,使用这些文件就更容易了。