Tcpdumpを使用して、最後のN秒のパケットをキャプチャするにはどうすればよいですか?
Tcpdumpをn秒間実行してから終了する場合は、タイムアウトを使用できます。
例えば:
timeout 2 tcpdump -eni mon0
それ以外の場合、tcpdumpにこれを行うオプションがあるとは思わない。
これを達成する最良の方法は、tcpdumpの-Gフラグを使用することです。これは、-wと共に使用すると、N秒ごとにダンプを新しいファイルに保存します。例えば:
tcpdump -w outfile-%s -G 10
これにより、10秒ごとに「outfile-XXXX」という名前の新しいファイルが作成されます(XXXXはエポックからの秒数を表します)。
詳細については、tcpdump(8)およびstrftime(3)のマニュアルページを参照してください。
Tcpdumpの代わりにtetherealを使用できます。次のコマンドラインオプションを使用できます。
-a duration:X
私は同じ問題を解決しようとしていたので、n秒間tcpdumpを実行するポータブルスクリプトを作成しました。
#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@
tcpdump $@ & x=$!
sleep $n
kill $x
使用法./tcpdump_for_n_sec.sh tcpdumpの秒引数
./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
pIDをメモして、11193だと言ってください
at 11:00 kill 11193
11:00になるまで待ってください。キャプチャは強制終了されますが保存されます
Sudo tcpdump -i -w&tcpdump is sleeping modeを実行します