web-dev-qa-db-ja.com

tcpdumpでファイルに書き込み、適切なデータを標準出力する方法を教えてください。

Tcpdumpに未処理のパケットデータをファイルに書き込み、パケットがキャプチャされるときにパケット分析を標準出力に表示したい(分析では、-wがない場合に通常表示される行を意味します)。誰でもそれを行う方法を教えてもらえますか?

44
user2565010

あなたがしたいことをするためのきちんとした方法は次のとおりです。

tcpdump -w - | tee somefile | tcpdump -r -

それが何をする:

  • -w -は、tcpdumpにバイナリデータをstdoutに書き込むように指示します
  • teeは、そのバイナリデータをファイルおよび独自のstdoutに書き込みます
  • -r -は、2番目のtcpdumpstdinからデータを取得するように指示します
93
cnicutar

Tcpdumpを2回実行せずにそれを行う方法が必要な場合は、以下を考慮してください。

Sudo tcpdump port 80 -w $(tty) | tee /tmp/output.txt

対話型コマンドプロンプトから$(tty)の代わりに$TTYを使用できますが、スクリプトでは前者は設定されません(スクリプトでtcpdumpを実行するのが一般的かどうかはわかりません)。

補足:tcpdumpがデフォルトでファイルへの書き込みを行うのは、Unix-yではありません。プログラムはデフォルトでstdoutに書き込む必要があります。ファイルへのリダイレクトは、Shellコンストラクトによってすでに提供されています。 tcpdumpがこのように設計されているのには十分な理由があるかもしれませんが、それが何であるかはわかりません。

0