bandwhich - Hoja de Trucos de Monitor de Ancho de Banda por Proceso
bandwhich es una utilidad terminal Rust que muestra la utilización de red actual desglosada por proceso, conexión e IP/nombre de host remoto. A diferencia de iftop (por conexión) o nethogs (solo por proceso), bandwhich correlaciona sockets con el proceso propietario y resuelve puntos finales remotos, para que puedas ver instantáneamente qué aplicación — y qué host remoto — está consumiendo ancho de banda.
Instalación
| Plataforma | Comando |
|---|
| Cargo (todas las plataformas) | cargo install bandwhich |
| Arch Linux | sudo pacman -S bandwhich |
| Debian/Ubuntu | sudo apt install bandwhich |
| Fedora | sudo dnf install bandwhich |
| macOS (Homebrew) | brew install bandwhich |
| Nix | nix-env -iA nixpkgs.bandwhich |
| Binario precompilado | Descargar desde la página de Releases de GitHub |
Privilegios
bandwhich debe inspeccionar paquetes, por lo que necesita capacidades elevadas:
# Lo más simple: ejecutar con sudo
sudo bandwhich
# O otorga capacidades al binario una vez (sin sudo después, Linux)
sudo setcap cap_net_raw,cap_net_admin=eip $(which bandwhich)
Uso Básico
| Comando | Descripción |
|---|
sudo bandwhich | Monitorea todas las interfaces, TUI en vivo |
sudo bandwhich -i eth0 | Observa una interfaz única |
sudo bandwhich --interface wlan0 | Lo mismo, forma larga |
bandwhich --help | Lista completa de opciones |
bandwhich --version | Versión |
Opciones Clave
| Opción | Descripción |
|---|
-i, --interface NAME | Limita el monitoreo a una interfaz |
-n, --no-resolve | Omite búsquedas inversas de DNS (más rápido, IPs crudas) |
-r, --raw | Salida legible por máquina, no interactiva (buena para logging) |
-p, --processes | Muestra solo la tabla de procesos |
-c, --connections | Muestra solo la tabla de conexiones |
-a, --addresses | Muestra solo la tabla de direcciones remotas |
--total-utilization | Imprime un total único en lugar de la interfaz de usuario en vivo |
-s, --show-dns | Incluye consultas DNS en la vista de conexión |
-d, --dns-server IP | Usa un resolvedor específico para búsquedas inversas |
Teclas Interactivas
| Tecla | Acción |
|---|
Tab | Cicla el diseño / rota qué tabla está expandida |
Space | Pausa / reanuda actualizaciones |
↑ / ↓ | Desplázate dentro de una tabla |
q / Ctrl+C | Salir |
Lectura de la Pantalla
bandwhich muestra tres tablas en vivo:
| Tabla | Te dice |
|---|
| Utilización por proceso | Qué ejecutables están enviando/recibiendo, con tasas de arriba/abajo |
| Conexiones | Cada socket: local → remoto, protocolo, y tasa por conexión |
| Utilización por dirección remota | Con qué hosts remotos (resueltos) estás intercambiando la mayoría de datos |
Las tasas se muestran como velocidad de arriba (▲) y abajo (▼) actual, actualizadas aproximadamente una vez por segundo.
Flujos de Trabajo Comunes
# "¿Qué se está comiendo mi carga hacia arriba ahora?" — solo procesos, sin retardo DNS
sudo bandwhich -p -n
# Investiga una interfaz ruidosa y registra un flujo crudo para análisis posterior
sudo bandwhich -i eth0 --raw | tee bandwhich-eth0.log
# Snapshot único de utilización total (scripts/cron)
sudo bandwhich --total-utilization -n
# Encuentra los principales habladores remotos (p. ej. una exfiltración o trabajo de copia de seguridad)
sudo bandwhich -a
bandwhich vs Otros Monitores de Red
| Herramienta | Granularidad | Notas |
|---|
| bandwhich | Proceso + conexión + host remoto | TUI Rust, resuelve remotos |
| nethogs | Por proceso | Sin agrupación de hosts remotos |
| iftop | Por conexión | Sin atribución de procesos |
| nload | Totales por interfaz | Gráfico agregado simple |
| iptraf-ng | Por interfaz/conexión | Suite ncurses más antigua |
Recursos