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
空白文字やその他のワイルドカードが含まれている場合は、別のファイルに拡張されます。ここでは配列を使用し、すべての変数を参照することをお勧めします。