5325


tcpdump -Ini en0 -w test1.pcap を実行、  
30秒たったらtcpdumpを終了したいです。

以下に試行錯誤の様子を記載します。

[code]

    #!/bin/bash -v
    timeout 30 tcpdump -Ini en0  -w test1.pcap
    
[/code]

というスクリプトを書いてみましたが、bashではtimeoutを使えないようです。  
-bash: timeout: command not found
[code]

    #!/bin/bash -v
    timeout 30 tcpdump -Ini en0  -w test1.pcap
    sleep 30
    exit
    
[/code]

と書いてみましたが、30秒経ってもパケットキャプチャは終了しません。


CC BY-SA 3.0
2015-01-26T08:22:02.330
5319
2015-01-26T11:05:16.933
2015-01-26T11:05:16.933
76
7590
question
macos bash tcpdump
TCP Dumpを30秒間で終了させたい


`tcpdump` をバックグラウンドで動かし、30秒 `sleep` した後に `tcpdump` を `kill` するというのはどうでしょう。

[code]

    #!/bin/bash -v
    tcpdump -Ini en0 -w test1.pcap &
    sleep 30
    kill $!
    
[/code]


CC BY-SA 3.0
2015-01-26T08:42:35.933
5322
2015-01-26T08:42:35.933
3160
5319
answer


`-W` オプションと `-G` オプションを併用します。

以下のように起動することで、ログローテーションは60秒間隔 (`-G60`), ローテーション1回のみで終了 (`-W1`)
となります。このため、結果的に60秒間で `tcpdump` は終了します。

[code]

    tcpdump -i eth0 -w moemoe.pcap -W1 -G60
    
[/code]


CC BY-SA 3.0
2015-01-26T08:56:29.103
5325
2015-01-26T08:56:29.103
76
5319
answer