24145


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

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

[code]

    #!/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
    
[/code]

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


CC BY-SA 3.0
2016-04-19T02:22:06.330
24134
2016-04-28T04:51:42.883
2016-04-19T14:25:01.913
7590
7590
question
macos bash
フォルダ内の全てのファイルに対して処理を実行させたい

[code]

    #!/bin/sh
    for file in `\find . -name '*.pcapng'`; do
    
    tshark -r $file -Y "wlan.fcs_bad == 0 && wlan.ta == 00:00:00:00:00:00"  -T fields -E separator’,’ -e frame.time_relative  -e wlan.seq —e tcp.seq -e radiotap.datarate -e radiotap.mcs.index -e radiotap.channel.type > $file-1.csv
    tshark -r $file -Y "wlan.fcs_bad == 0 && wlan.ra == 00:00:00:00:00:00" -T fields -E separator’,’ -e frame.time_relative  -e wlan.seq -e tcp.seq -e radiotap.datarate -e radiotap.mcs.index -e radiotap.channel.type > $file-2.csv
    done
    read wait
    
[/code]

findコマンドを使ってみました。


CC BY-SA 3.0
2016-04-19T02:43:31.450
24137
2016-04-19T05:14:59.147
2016-04-19T05:14:59.147
7590
7590
24134
answer

[code]

    #!/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
    
[/code]

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


CC BY-SA 3.0
2016-04-19T05:48:06.423
24145
2016-04-19T05:48:06.423
6092
24134
answer


フォルダ(/log)の中に、A.pcapng , B.pcapng だけなら、

[code]

    for f in `ls /log`
    do
        echo ${f};    //${f}を使った処理
    done
    
[/code]

のように、`ls`でもできます。


CC BY-SA 3.0
2016-04-28T04:51:42.883
24413
2016-04-28T04:51:42.883
15147
24134
answer