使用 bash 使用 pcap 拆分器拆分 wireshark 大尺寸

Splitting wireshark large size with pcap splitter with bash

我有很大的 pcapng 文件,我想根据我想要的 wireshark 过滤器拆分它们。我想借助 bash 脚本并使用 pcapsplitter 拆分我的文件,但是当我使用循环时,它总是给我相同的文件。

我写了一个小代码。


#!/bin/bash

for i in {57201..57206}
do
mkdir destination/$i
done

tcp="tcp port "

for i in {57201..57206}
do
tcp="$tcp$i"
pcapsplitter -f file.pcapng -o destination/$i -m bpf-filter -p $tcp
done

问题是,我可以使用 bash 作为我的目标吗? 如果是,为什么它不起作用?

当然,这是Bash可以做到的。

关于你的脚本,我首先想到的是这一行:

pcapsplitter -f file.pcapng -o destination/$i -m bpf-filter -p $tcp

$tcp 的值实际上是 tcp port 57201 (以及下一轮的后续数字。但是,如果没有引号,您实际上只是将 tcp 传递给 -p参数。

将此行更改为 :

后应该会更好用
pcapsplitter -f file.pcapng -o destination/$i -m bpf-filter -p "$tcp"

注意:作为一般建议,在 Bash.

中使用 double-quote 变量通常更安全

NB2 :您不需要那 2 个 for 循环。以下是我将如何重写您的脚本:

#!/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