bash或shell脚本-pcap文件到CSV文件的转换

时间:2019-02-14 08:54:00

标签: bash shell csv ubuntu pcap

我有一个包含数千个.pcap文件的文件夹,并且我想将这些文件转换为.csv(例如:1.pcap-> 1.csv,2.pcap-> 2.csv,.. )。

我写了这个bash脚本:

#!/bin/bash

for f in /home/pc/Desktop/pcapfiles/*.pcap; do
tshark -r ./"$f" -T fields -e frame.number -e frame.time -e ip.src -e ip.dst -e ip.proto -e frame.len -E header=y -E separator=, -E quote=d -E occurrence=f> ./"${f%.pcap}.csv"

done

PS:我尝试使用批处理脚本来完成此任务(我已经发布了问题,但是它对我不起作用,所以我决定尝试使用bash脚本或shell脚本。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您应该删除最后5个字符,以删除.pcap扩展名并添加csv

#!/bin/bash

for f in /home/pc/Desktop/pcapfiles/*.pcap; do
    tshark -r ./"$f" -T fields -e frame.number -e frame.time -e ip.src -e ip.dst -e ip.proto -e frame.len -E header=y -E separator=, -E quote=d -E occurrence=f > ./"{$f::-5}".csv"
done

答案 1 :(得分:0)

脚本的问题是,您要遍历具有完整绝对路径的文件列表,然后尝试写入与当前目录的子目录序列相同的路径。

您将要从每个文件名中删除路径。您可以使用basename或使用参数替换来完成此操作,这与您已经修剪.csv扩展名的方式有些类似。

即使那样,您也无法使用./"$f"来指代"$f"等情况下的/path/to/current/directory/home/pc/Desktop/pcapfiles/first.pcap

#!/bin/bash

for f in /home/pc/Desktop/pcapfiles/*.pcap; do
    base=${f##*/}
    tshark -r "$f" \
        -T fields -e frame.number -e frame.time \
        -e ip.src -e ip.dst -e ip.proto -e frame.len \
        -E header=y -E separator=, -E quote=d \
        -E occurrence=f> ./"${base%.pcap}.csv"
done