Tcpdumpに未処理のパケットデータをファイルに書き込み、パケットがキャプチャされるときにパケット分析を標準出力に表示したい(分析では、-wがない場合に通常表示される行を意味します)。誰でもそれを行う方法を教えてもらえますか?
あなたがしたいことをするためのきちんとした方法は次のとおりです。
tcpdump -w - | tee somefile | tcpdump -r -
それが何をする:
-w -
は、tcpdump
にバイナリデータをstdout
に書き込むように指示しますtee
は、そのバイナリデータをファイルおよび独自のstdout
に書き込みます-r -
は、2番目のtcpdump
にstdin
からデータを取得するように指示しますTcpdumpを2回実行せずにそれを行う方法が必要な場合は、以下を考慮してください。
Sudo tcpdump port 80 -w $(tty) | tee /tmp/output.txt
対話型コマンドプロンプトから$(tty)
の代わりに$TTY
を使用できますが、スクリプトでは前者は設定されません(スクリプトでtcpdumpを実行するのが一般的かどうかはわかりません)。
補足:tcpdumpがデフォルトでファイルへの書き込みを行うのは、Unix-yではありません。プログラムはデフォルトでstdoutに書き込む必要があります。ファイルへのリダイレクトは、Shellコンストラクトによってすでに提供されています。 tcpdumpがこのように設計されているのには十分な理由があるかもしれませんが、それが何であるかはわかりません。