pcapファイル内のすべてのパケットの合計

pcapファイル内のすべてのパケットの合計

pcapファイルにキャプチャされたパケット数を数える単純なbashスクリプトを作成しようとしています。 tcpdumpを使用して各pcapファイルからパケットを取得し、bashスクリプトを使用して追加していますが、うまくいかないようです。

#!/bin/bash
FILES=/share/capture/*.pcap
sum =0
for f in $FILES
 do
  output=$(sudo tcpdump -r $f 2> /dev/null |wc -l)
  sum = $((output+ sum))
done
echo $sum

何が間違っているのか教えてもらえますか?

ベストアンサー1

wc -lすべてのファイルの出力を実行します。

#!/bin/bash -
files=(/share/capture/*.pcap)

for f in "${files[@]}"; do
  tcpdump -qr "$f" 2> /dev/null
done | wc -l

また見なさい:

capinfos -rTc "${files[@]}"

capinfos -rTc "${files[@]}" | cut -f2 | paste -sd + | bc

(ファイル名にTABまたはNL文字が含まれていないと仮定)。

行動に注意してください:

FILES=/share/capture/*.pcap

/share/capture/*.pcapファイルリストの代わりに文字列を割り当てています$FILES。引用符なしで引用すると、$FILESグローバルパターンが拡張されます(分割+グローバルオペレーター)。後で$f引用符を省略することもできますので、分割+グローブ演算子をもう一度呼び出してください。したがって、$f空白文字やその他のワイルドカードが含まれている場合は、別のファイルに拡張されます。ここでは配列を使用し、すべての変数を参照することをお勧めします。

おすすめ記事