フォルダ内の全てのファイルに対して処理を実行させたい

投稿者: Anonymous

フォルダ内の全てのPCAPファイルをtsharkに処理させたいと思います。

フォルダ(/log)の中に、A.pcapng , B.pcapng というファイルがあります。

#!/bin/sh
for filepath in /log 
do
tshark -r $1 -Y "wlan.fcs_bad == 0 && wlan.ta == 00:00:00:00:00:00" fields -E separator’;’ -e frame.time_relative  -e wlan.seq —e tcp.seq -e radiotap.datarate -e radiotap.mcs.index -e radiotap.channel.type > $1-ta.csv
tshark -r $1  -Y "wlan.fcs_bad == 0 && wlan.ra == 00:00:00:00:00:00" fields -E separator’;’ -e frame.time_relative  -e wlan.seq -e tcp.seq -e radiotap.datarate -e radiotap.mcs.index -e radiotap.channel.type > $1-ra.csv
done
read wait

$1にA.pcapng , B.pcapng が自動的に入るようにしたいのですが、どう引数を渡せばいいでしょうか。

解決

#!/bin/bash

for filepath in /log/*.pcapng
do
  tshark -r $filepath -Y "wlan.fcs_bad == 0 && wlan.ta == 00:00:00:00:00:00" fields -E separator’;’ -e frame.time_relative  -e wlan.seq —e tcp.seq -e radiotap.datarate -e radiotap.mcs.index -e radiotap.channel.type > ${filepath}-ta.csv
  tshark -r $filepath -Y fields "wlan.fcs_bad == 0 && wlan.ra == 00:00:00:00:00:00" -E separator’;’ -e frame.time_relative  -e wlan.seq -e tcp.seq -e radiotap.datarate -e radiotap.mcs.index -e radiotap.channel.type > ${filepath}-ra.csv
done
read wait

for filepath in ...としていますので$filepathで参照できます。
また、このままですと、出力先はA.pcapng-ta.csvといったファイル名になります。
出力先を${filepath%.*}-ta.csvにすればA-ta.csvになりよりスマートです。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *