
Herramienta de utilización de ancho de banda en terminal

Esta es una utilidad CLI para mostrar la utilización actual de la red por proceso, conexión y IP/hostname remoto.
Este proyecto se encuentra en mantenimiento pasivo. Los problemas críticos serán abordados, pero no se están desarrollando nuevas funcionalidades. Sin embargo, esto se debe principalmente a la falta de financiación y/o personal, por lo que las solicitudes de extracción (pull requests) son más que bienvenidas. Además, si puedes y estás dispuesto a contribuir a este proyecto a largo plazo, te invitamos a solicitar ser co-mantenedor.
Para más detalles, consulte The Future of Bandwhich #275.
bandwhich husmea una interfaz de red determinada y registra el tamaño de los paquetes IP, cruzándolo con el sistema de archivos /proc en Linux, lsof en macOS, o usando WinApi en Windows. Responde al tamaño de la ventana del terminal, mostrando menos información si no hay espacio suficiente. También intenta resolver las IP a sus nombres de host en segundo plano mediante DNS inverso en el mejor de los casos.
Para instrucciones detalladas de cada plataforma, consulte INSTALL.md.
Ofrecemos varios binarios genéricos en releases para varios SO.
| SO | Arquitectura | Soporte | Uso |
|---|---|---|---|
| Android | aarch64 | Mejor esfuerzo |
Dispositivos Android modernos. Nótese que es un archivo binario puro, no un APK adecuado para uso general. |
| Linux | aarch64 | Completo | ARMv8+ de 64 bits (servidores, algunos enrutadores modernos, RPi-4+). |
| armv7hf | Mejor esfuerzo | ARMv7 de 32 bits (enrutadores antiguos, pre-RPi-4). | |
| x64 | Completo | La mayoría de los escritorios y servidores Linux. | |
| MacOS | aarch64 | Completo | Macs con chip Apple silicon (2021+). |
| x64 | Macs Intel (pre-2021). | ||
| Windows | x64 | Completo | La mayoría de los escritorios y servidores Windows. |
git clone https://github.com/imsnif/bandwhich.git
cd bandwhich
cargo build --release
Para la versión mínima compatible de Rust actualizada, consulte el campo rust-version en Cargo.toml.
La compilación cruzada para otros objetivos es compatible mediante cross. Aquí el procedimiento aproximado:
uname -m.cross.cross build --release --target <TARGET_TRIPLE>.Hasta que se resuelva cross-rs/cross#1222, use la última versión HEAD:
cargo install --git https://github.com/cross-rs/cross.git cross
cross build --release --target aarch64-linux-android
Dado que bandwhich husmea paquetes de red, requiere privilegios elevados.
En Linux, hay dos formas principales de lograr esto:
setcapbandwhich los privilegios necesarios (llamados "capacidades" en Linux).# asignar capacidades
sudo setcap cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep $(command -v bandwhich)
# ejecutar como usuario no privilegiado
bandwhich
cap_sys_ptrace,cap_dac_read_search: permiten el acceso a /proc/<pid>/fd/, para que bandwhich pueda determinar qué puerto abierto pertenece a qué proceso.cap_net_raw,cap_net_admin: permiten capturar paquetes en su sistema.sudo (o alternativa)sudo bandwhich
Tenga en cuenta que si su método de instalación colocó bandwhich en algún lugar de su directorio personal (puede verificarlo con command -v bandwhich), es posible que reciba un error de command not found. Esto se debe a que en muchas distribuciones, sudo por defecto no conserva el $PATH del usuario por motivos de seguridad.
Para solucionarlo, puede hacer una de las siguientes opciones:
sudo conserve su variable de entorno $PATH;$PATH al ejecutar bandwhich: sudo env "PATH=$PATH" bandwhich;sudo: sudo $(command -v bandwhich).Es posible que primero necesite instalar npcap para capturar paquetes en 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
Véase CONTRIBUTING.md.
MIT