LinuxParty
En un servidor Linux, conocer el ancho de banda que estás consumiendo no solo es útil para diagnosticar problemas de red, sino también para controlar gastos si tu proveedor cobra por tráfico.
En este artículo veremos desde herramientas rápidas hasta un script en Bash que puedes usar en cualquier servidor y programar con cron para llevar un registro histórico diario o mensual.
🔹 Métodos rápidos para ver el ancho de banda
1. ifstat
Una forma rápida y sencilla de ver el tráfico en todas las interfaces:
ifstat -t
En RHEL/CentOS:
sudo yum install ifstat
En Debian/Ubuntu:
sudo apt install ifstat
Otro artículo que interesaría leer: Medir y ajustar el ancho de banda con Iperf
2. nload
Interfaz visual en consola que muestra subida y bajada:
nload eth0
3. /proc/net/dev
Sin instalar nada, puedes consultar directamente los contadores:
cat /proc/net/dev
Esto muestra bytes recibidos y enviados desde el arranque. Si mides la diferencia entre dos lecturas separadas por unos segundos, obtendrás la velocidad.
🔹 Herramientas para diagnóstico
-
iftop – Muestra en tiempo real quién consume más ancho de banda:
sudo iftop -i eth0
-
bmon – Similar a
nload, pero con más estadísticas:
bmon
🔹 Histórico y consumo mensual
Para llevar un registro de tráfico diario y mensual, vnstat es muy recomendable:
sudo yum install vnstat # RHEL/CentOS sudo apt install vnstat # Debian/Ubuntu sudo systemctl enable vnstat sudo systemctl start vnstat vnstat -d # Por día vnstat -m # Por mes
🔹 Script en Bash para medir ancho de banda en tiempo real
Si prefieres algo ligero y sin depender de paquetes externos, aquí tienes un script que calcula el ancho de banda en Mbps usando los contadores del sistema:
#!/usr/bin/env bash # netwatch.sh — Mide ancho de banda en tiempo real (Mbps) por interfaz # Uso: ./netwatch.sh [-i interfaz] [-t intervalo_seg] set -euo pipefail IFACE="" INTERVAL=1 usage() { echo "Uso: $0 [-i interfaz] [-t intervalo_seg]"; exit 1 } while getopts ":i:t:h" opt; do case "$opt" in i) IFACE="$OPTARG" ;; t) INTERVAL="$OPTARG" ;; h|*) usage ;; esac done # Autodetección de interfaz si no se indica if [[ -z "${IFACE}" ]]; then IFACE=$(ip -o route get 1.1.1.1 2>/dev/null | awk '{for(i=1;i<=NF;i++) if ($i=="dev") {print $(i+1); exit}}') || true [[ -z "${IFACE}" ]] && IFACE=$(ip -o -4 addr show up | awk '$2!="lo"{print $2; exit}') fi # Comprobaciones [[ -z "${IFACE}" ]] && { echo "No se pudo detectar interfaz. Usa -i"; exit 1; } [[ -r "/sys/class/net/${IFACE}/statistics/rx_bytes" ]] || { echo "Interfaz ${IFACE} inválida."; exit 1; } printf "Midiendo en interfaz: %s (intervalo: %ss)\n" "$IFACE" "$INTERVAL" printf "%-8s %-10s %12s %12s\n" "HORA" "IFACE" "IN (Mbps)" "OUT (Mbps)" trap 'echo; echo "Saliendo..."; exit 0' INT while :; do t0=$(date +%s.%N) rx0=$(<"/sys/class/net/${IFACE}/statistics/rx_bytes") tx0=$(<"/sys/class/net/${IFACE}/statistics/tx_bytes") sleep "$INTERVAL" t1=$(date +%s.%N) rx1=$(<"/sys/class/net/${IFACE}/statistics/rx_bytes") tx1=$(<"/sys/class/net/${IFACE}/statistics/tx_bytes") dt=$(awk -v a="$t1" -v b="$t0" 'BEGIN{printf "%.6f", (a-b)}') drx=$((rx1 - rx0)) dtx=$((tx1 - tx0)) in_mbps=$(awk -v b="$drx" -v s="$dt" 'BEGIN{printf "%.2f", (b*8)/(s*1000000)}') out_mbps=$(awk -v b="$dtx" -v s="$dt" 'BEGIN{printf "%.2f", (b*8)/(s*1000000)}') printf "%-8s %-10s %12s %12s\n" "$(date +%H:%M:%S)" "$IFACE" "$in_mbps" "$out_mbps" done
🔧 Cómo usarlo
-
Guardar como
netwatch.sh -
Dar permisos:
chmod +x netwatch.sh
-
Ejecutar:
./netwatch.sh
O especificando interfaz y intervalo:
./netwatch.sh -i eth0 -t 2
Ejemplo de salida:
Midiendo en interfaz: eth0 (intervalo: 1s) HORA IFACE IN (Mbps) OUT (Mbps) 12:04:11 eth0 3.27 1.12 12:04:12 eth0 8.91 0.56 12:04:13 eth0 0.14 0.09
📓 Cómo registrar el consumo con cron
El script anterior muestra datos en pantalla, pero también puedes hacer que registre el consumo en un archivo para revisarlo más tarde.
1. Modificar el script para volcar a log
Puedes reutilizar el mismo script así:
./netwatch.sh -i eth0 -t 60 >> /var/log/netwatch.log 2>&1
Esto medirá cada 60 segundos y guardará los resultados en /var/log/netwatch.log.
2. Programar en cron
Edita el cron del sistema:
sudo crontab -e
Y añade una línea como esta:
*/5 * * * * /ruta/netwatch.sh -i eth0 -t 300 >> /var/log/netwatch.log 2>&1
Esto:
-
Se ejecuta cada 5 minutos
-
Mide durante 300 segundos (5 minutos)
-
Añade la salida al log
3. Revisar el histórico
Para ver el consumo registrado:
less /var/log/netwatch.log
O filtrar por fecha/hora:
grep "2025-08" /var/log/netwatch.log
📌 Puntos de interés
-
Si quieres monitorizar en vivo: usa
iftop,nloado este script. -
Si buscas histórico mensual: instala
vnstat. -
Si necesitas archivar el consumo: programa el script con
crony guarda los datos en un log.
Con este método podrás no solo diagnosticar problemas de red en tiempo real, sino también tener un histórico preciso del uso de ancho de banda de tu servidor.

-
Internet
- Crear un Web Crawler Básico con Python
- Medir y ajustar el ancho de banda con Iperf
- 📡 Cómo medir el ancho de banda que consumes en tu servidor Linux (en tiempo real y con histórico)
- Compartir o Enviar archivos sin una Red Local o LAN con woof
- Fin de ciclo de vida para BIND 8.x
- Análisis y Estadísticas con AWStats
- Un simple script para seguir Web sites.
- TradeDoubler Adquiere 'The Search Works' y 'The Technology Works'
- Blogueros del Mundo, Sindicato de Blogueros.
- Guerra de Titanes.
- Recuperando emails con fetchmail
- Las palabras que más odian los internautas



