「tcpdump」は最後のパケットをキャプチャします。

「tcpdump」は最後のパケットをキャプチャします。

特定のポートを監視していますが、アプリケーションがそのポートを使用しているため、接続がランダムに切断されているように見え、接続が切断される前に最後に通過したパケットが何であるかを確認したいと思います。次の行を使用しました。

 sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

しかし、動作するには別の端末を起動して質問を発行する必要がありました。

sudo killall tcpdump

もっと良い方法がありますか? EDIT1:ディスク容量をすばやく満たすのに十分なトラフィックがあるため、ファイルが膨らむのを望まないため、最後のパケットだけをキャプチャすることが重要です。

ベストアンサー1

うん、私が見つけたと思います。解決策:

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

これにより、出力ファイルが10秒ごとに次のファイルに回転します。tcpamir-<unixtimestamp>.txt

ファイルサイズの中断が心配な場合は、出力ファイルを変更して毎日上書きすることもできます。詳細についてはを読んでくださいman 3 strftime

私は次のようなことを考えました

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

%R時間は24時間形式(例:12:40)で提供されます。

関連出力ファイルの読み取り

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

2番目の解決策:

より多くのコマンドに分割し、スクリプト/関数として保存します。

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt

おすすめ記事