使用带有bash的pcap拆分器拆分大尺寸wireshark

使用带有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

我有大的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
完成
问题是,我是否可以使用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
重命名所需的文件。这样,使用这些文件就更容易了。