私は特定のポートを監視しています。私のアプリケーションはそのポートを使用しているため、接続がランダムに切断されるようです。接続が切断される前に通過した最後のパケットを確認したいのです。次の行を使用しました。
sudo tcpdump -XX -i eth0 port 3050 | tail >> tcpamir.txt
しかし、それを機能させるには別のターミナルを起動して発行する必要があります
sudo killall tcpdump
もっと良い方法はありますか? 編集1: ディスク領域をすぐにいっぱいにするほどのトラフィックがあるため、ファイルが膨らまないように、最後のパケットのみをキャプチャすることが重要です。
答え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
答え2
キャプチャしたすべてのトラフィックを書き込みたい場合は、行に-wを追加して削除するだけです。'| 末尾 >> tcpamir.txt'
# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap
Wiresharkでキャプチャを解析する場合、拡張子は.capでなければなりません。キャプチャが完了したことを確認したら、これを次のように強制終了できます。Ctrl + C キー
注: -w [filename.cap] はキャプチャをファイルに書き込む