web-dev-qa-db-ja.com

特定の期間にtcpdumpを実行するようにスケジュールする方法は?

毎回、tcpdumpを手動で実行するときは、 Ctrl+C それを止めるために。 tcpdumpをcronjobでスケジュールしたいのですが、1時間半実行するだけで済みます。手動で実行せずに Ctrl+C またはkillコマンド、どのように自動的に停止できますか?私がテストしているコマンドは次のとおりです。

tcpdump -i eth0 'port 8080' -w  myfile

別のcronjobをスケジュールしてtcpdumpプロセスを強制終了することもできますが、それは得策ではありません。

31
Gary

-G {sec}(x秒ごとにダンプファイルを回転)および-W {count}(ダンプファイルの制限数)を使用して、必要なものを取得します。

tcpdump -G 15 -W 1 -w myfile -i eth0 'port 8080'

15秒間実行してから停止します。 1.5時間を秒に変えると、動作するはずです。

46
Paul Rubel

タイムアウトを使用できます

timeout 5400 tcpdump -i eth0 'port 8080' -w myfile
35
Matt

次のようにできます:

tcpdump -i eth0 'port 8080' -w  myfile & 
pid=$!
sleep 1.5h
kill $pid
16
kiwisan

Ubuntu 14.04で私に最適なアプローチ

Sudo -i
crontab -e

そして、行を追加します

30 17 * * * /usr/sbin/tcpdump -G 12600 -W 1 -s 3000 -w /home/ubuntu/capture-file.pcap port 5060 or portrange 10000-35000

ノート

  • -Gフラグは、ダンプを実行する秒数を示します。この例は、毎日5:30 PMから9:00 PMまで実行します
  • -Wは、tcpdumpが実行する反復回数です
  • ファイルを保存して終了するまで、cronジョブは追加されません。
  • この例は、アスタリスク電話サーバーのパケットをキャプチャするためのものです
4
Ryan Charmley