
Outil de mesure de l'utilisation de la bande passante en terminal

Il s'agit d'un utilitaire CLI qui affiche l'utilisation réseau actuelle par processus, connexion et IP/hôte distant.
Ce projet est en maintenance passive. Les problèmes critiques seront traités, mais aucune nouvelle fonctionnalité n'est développée. Cela est principalement dû à un manque de financement et/ou de personnel, donc les pull requests sont plus que bienvenues. De plus, si vous êtes capable et désireux de contribuer à ce projet à long terme, nous vous invitons à postuler pour une co-maintenance.
Pour plus de détails, voir The Future of Bandwhich #275.
bandwhich écoute une interface réseau donnée et enregistre la taille des paquets IP, en la recoupant avec le système de fichiers /proc sur Linux, lsof sur macOS, ou en utilisant WinApi sur Windows. Il s'adapte à la taille de la fenêtre du terminal, affichant moins d'informations si l'espace manque. Il tente également de résoudre les IPs en noms d'hôte en arrière-plan via DNS inverse, au mieux.
Pour des instructions détaillées pour chaque plateforme, voir INSTALL.md.
Nous proposons plusieurs binaires génériques dans les releases pour différents OS.
git clone https://github.com/imsnif/bandwhich.git
cd bandwhich
cargo build --release
Pour la version minimale de Rust supportée à jour, veuillez vous référer au champ rust-version dans Cargo.toml.
La cross-compilation pour des cibles alternatives est supportée via cross. Voici la procédure générale :
uname -m.cross.cross build --release --target <TARGET_TRIPLE>.Tant que cross-rs/cross#1222 n'est pas résolu, utilisez la dernière version HEAD :
cargo install --git https://github.com/cross-rs/cross.git cross
cross build --release --target aarch64-linux-android
Puisque bandwhich écoute les paquets réseau, il nécessite des privilèges élevés.
Sous Linux, il y a deux manières principales de procéder :
setcapbandwhich avec ses privilèges requis (appelés "capacités" sous Linux).# attribuer les capacités
sudo setcap cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep $(command -v bandwhich)
# exécuter en tant qu'utilisateur non privilégié
bandwhich
cap_sys_ptrace,cap_dac_read_search : permet l'accès à /proc/<pid>/fd/, afin que bandwhich puisse déterminer quel port ouvert appartient à quel processus.cap_net_raw,cap_net_admin : permet la capture de paquets sur votre système.sudo (ou alternative)sudo bandwhich
Notez que si votre méthode d'installation a installé bandwhich dans un répertoire
de votre home (vous pouvez vérifier avec command -v bandwhich), vous pourriez
recevoir une erreur command not found. Cela se produit car dans de nombreuses
distributions, sudo par défaut ne conserve pas le $PATH de votre utilisateur
pour des raisons de sécurité.
Pour contourner ce problème, vous pouvez faire l'une des choses suivantes :
sudo conserve votre variable d'environnement $PATH ;$PATH lors de l'exécution de bandwhich : sudo env "PATH=$PATH" bandwhich ;sudo : sudo $(command -v bandwhich).Vous devrez peut-être d'abord installer npcap pour capturer des paquets sous Windows.
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
Voir CONTRIBUTING.md.
MIT
| OS | Architecture | Soutien | Utilisation |
|---|
| Android | aarch64 | Meilleur effort |
Tous les appareils Android modernes. Notez qu'il s'agit d'un fichier binaire pur, pas d'un APK adapté à un usage général. |
| Linux | aarch64 | Complet | 64 bits ARMv8+ (serveurs, routeurs récents, RPi-4+). |
| armv7hf | Meilleur effort | 32 bits ARMv7 (routeurs anciens, pré-RPi-4). | |
| x64 | Complet | La plupart des postes de travail et serveurs Linux. | |
| MacOS | aarch64 | Complet | Macs Apple Silicon (2021+). |
| x64 | Macs Intel (avant 2021). | ||
| Windows | x64 | Complet | La plupart des postes de travail et serveurs Windows. |