コマンドのネットワークアクティビティを追跡したいのですが、tcpdumpとstraceを試しましたが、成功しませんでした。
たとえば、パッケージをインストールしたり、サイトにアクセスしようとするコマンドを使用している場合は、そのネットワークアクティビティ(アクセスしたいサイト)を確認したいと思います。
私の考えでは、tcpdumpを使ってこれを行うことができるようです。試してみましたが、私のシステムのすべてのネットワーク活動を追跡しています。複数のネットワーク関連コマンドを実行し、特定のコマンドネットワークアクティビティのみを追跡したい場合は、その時点で正確なソリューションを見つけるのが難しいでしょう。
これを行う方法はありますか?
修正する:
私はネットワークインターフェイスで何が起こっているのかを追跡したくありません。コマンド(例:#yum install -y vim)ネットワークアクティビティを追跡したいです。届きたいサイトのようなものです。
ベストアンサー1
簡単にするためにnetstat
netstat
PIDまたはプロセス名を見つけるには、およびgrepを使用します。
# netstat -np --inet | grep "thunderbird"
tcp 0 0 192.168.134.142:45348 192.168.138.30:143 ESTABLISHED 16875/thunderbird
tcp 0 0 192.168.134.142:58470 192.168.138.30:443 ESTABLISHED 16875/thunderbird
watch
動的更新が利用可能です。
watch 'netstat -np --inet | grep "thunderbird"'
そして:
-n
:シンボル化されたホスト、ポート、またはユーザー名を決定するのではなく、数値アドレスを表示します。-p
:各ソケットが属するプログラムのPIDと名前を表示します。--inet
:raw、udp、およびtcpプロトコルソケットのみが表示されます。
詳細な説明
ツールを試してみましたが、strace
オプションを試してみましたかtrace=network
?出力は非常に冗長である可能性があるため、grepを実行する必要があるかもしれません。 grep "sin_addr"で始めることができます。
strace -f -e trace=network <your command> 2>&1 | grep sin_addr
または、すでに実行されているプロセスの場合は、PIDを使用してください。
strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr