

これは、プロセス、接続、リモートIP/ホスト名別に現在のネットワーク使用状況を表示するCLIユーティリティです。
このプロジェクトは受動的なメンテナンス状態です。重大な問題は対処されますが、新機能の開発は行われていません。しかし、これは主に資金や人員の不足によるものであり、プルリクエストは大歓迎です。また、このプロジェクトに長期的に貢献できる意志と能力がある場合は、共同メンテナーへの応募を検討してください。
詳細については、The Future of Bandwhich #275を参照してください。
bandwhich は指定されたネットワークインターフェースをスニッフィングし、IPパケットサイズを記録します。そして、Linuxでは /proc ファイルシステム、macOSでは lsof、WindowsではWinApiを使用してプロセス情報と相互参照します。ターミナルウィンドウのサイズに応じて表示内容を調整し、スペースが不足している場合は情報を省略します。また、バックグラウンドで逆引きDNSを使用してIPをホスト名に解決しようと試みます(ベストエフォート)。
各プラットフォームの詳細な手順については、INSTALL.mdを参照してください。
リリースページでは、さまざまなOS向けの汎用バイナリをいくつか提供しています。
git clone https://github.com/imsnif/bandwhich.git
cd bandwhich
cargo build --release
最新の最低対応Rustバージョンについては、Cargo.tomlのrust-versionフィールドを参照してください。
代替ターゲットへのクロスコンパイルは cross を介してサポートされています。大まかな手順は以下の通りです。
uname -mを使用できます。crossをインストールします。cross build --release --target <TARGET_TRIPLE> を実行します。cross-rs/cross#1222 が解決されるまでは、最新のHEADを使用してください。
cargo install --git https://github.com/cross-rs/cross.git cross
cross build --release --target aarch64-linux-android
bandwhich はネットワークパケットをスニッフィングするため、昇格された権限が必要です。Linuxでは、主に以下の2つの方法でこれを実現できます。
setcapbandwhich バイナリに必要な権限(Linuxでは「ケイパビリティ」と呼ばれます)を永続的に付与します。# ケイパビリティの割り当て
sudo setcap cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep $(command -v bandwhich)
# 非特権ユーザーとして実行
bandwhich
cap_sys_ptrace,cap_dac_read_search: /proc/<pid>/fd/ へのアクセスを許可し、bandwhichがどの開いているポートがどのプロセスに属するかを特定できるようにします。cap_net_raw,cap_net_admin: システム上でパケットキャプチャを許可します。sudo (または代替)sudo bandwhich
インストール方法によって bandwhich がホームディレクトリ内のどこかにインストールされた場合(command -v bandwhich で確認できます)、command not found エラーが発生する可能性があります。これは多くのディストリビューションで、sudo がデフォルトでユーザーの $PATH を保持しないためです(安全性の理由から)。
これを回避するには、以下のいずれかを行ってください。
sudo に $PATH 環境変数を保持させる。bandwhich の実行時に $PATH を明示的に設定する: sudo env "PATH=$PATH" bandwhichsudo に渡す: sudo $(command -v bandwhich)Windowsでパケットキャプチャを行うには、最初に npcap をインストールする必要がある場合があります。
Usage: bandwhich [OPTIONS]
Options:
-i, --interface <INTERFACE> The network interface to listen on, eg. eth0
-r, --raw Machine friendlier output
-n, --no-resolve Do not attempt to resolve IPs to their hostnames
-s, --show-dns Show DNS queries
-d, --dns-server <DNS_SERVER> A dns server ip to use instead of the system default
--log-to <LOG_TO> Enable debug logging to a file
-v, --verbose... Increase logging verbosity
-q, --quiet... Decrease logging verbosity
-p, --processes Show processes table only
-c, --connections Show connections table only
-a, --addresses Show remote addresses table only
-u, --unit-family <UNIT_FAMILY> Choose a specific family of units [default: bin-bytes] [possible values: bin-bytes, bin-bits, si-bytes, si-bits]
-t, --total-utilization Show total (cumulative) usages
-h, --help Print help (see more with '--help')
-V, --version Print version
CONTRIBUTING.mdを参照してください。
MIT
| OS | アーキテクチャ | サポート | 使用方法 |
|---|
| Android | aarch64 | ベストエフォート |
すべての最新Androidデバイス。 これは純粋なバイナリファイルであり、一般的な用途向けのAPKではないことに注意してください。 |
| Linux | aarch64 | フルサポート | 64ビットARMv8+(サーバー、一部の最新ルーター、RPi-4+)。 |
| armv7hf | ベストエフォート | 32ビットARMv7(古いルーター、RPi-4より前)。 | |
| x64 | フルサポート | ほとんどのLinuxデスクトップおよびサーバー。 | |
| MacOS | aarch64 | フルサポート | Appleシリコン搭載Mac(2021年以降)。 |
| x64 | Intel Mac(2021年以前)。 | ||
| Windows | x64 | フルサポート | ほとんどのWindowsデスクトップおよびサーバー。 |