Para monitorizar el throughtput de una interfaz de red además de todas las herramientas que ofrece Linux (tanto gráficas como texto) puede resultar útil saber utilizar la herramienta ifconfig.
Nos salvará más de una vez cuando no podamos (o no queramos) instalar paquetes extra en un servidor.
Al ejecutar ifconfig nombre_interfaz obtendremos la información de esa interfaz y entre toda esa información tenemos la cantidad de bytes enviados y recibidos hasta el momento.
Crear un script que obtenga los kilobytes y kilobits de salida y entrada por segundo es tan sencillo como tomar dos medidas con un segundo de diferencia y hacer un pequeño cálculo.
#!/bin/bash
if [ $# -ne 2 ]
then
echo "USO: $0 nombre_interfaz num_ejecuciones"
echo " <num_ejecuciones> 0 para ejecutarse de forma continua"
echo " Ejemplo: $0 p32p1 2"
exit 1
fi
for (( i = 0; $2 == 0 || i < $2; i++ ))
do
SPIN0=`ifconfig $1 | grep bytes | cut -d ':' -f 2 | cut -d ' ' -f 1`
SPOUT0=`ifconfig $1 | grep bytes | cut -d ':' -f 3 | cut -d ' ' -f 1`
sleep 1s
SPIN1=`ifconfig $1 | grep bytes | cut -d ':' -f 2 | cut -d ' ' -f 1`
SPOUT1=`ifconfig $1 | grep bytes | cut -d ':' -f 3 | cut -d ' ' -f 1`
DSPIN=$(($SPIN1 - $SPIN0))
DSPOUT=$(($SPOUT1 - $SPOUT0))
DSPINKBIT=$(($DSPIN * 8 / 1000))
DSPOUTKBIT=$(($DSPOUT * 8 / 1000))
DSPINKB=$(($DSPIN / 1024))
DSPOUTKB=$(($DSPOUT / 1024))
echo "($1) IN: $DSPINKB KB/s - $DSPINKBIT kb/s OUT: $DSPOUTKB KB/s - $DSPOUTKBIT kb/s"
done
if [ $# -ne 2 ]
then
echo "USO: $0 nombre_interfaz num_ejecuciones"
echo " <num_ejecuciones> 0 para ejecutarse de forma continua"
echo " Ejemplo: $0 p32p1 2"
exit 1
fi
for (( i = 0; $2 == 0 || i < $2; i++ ))
do
SPIN0=`ifconfig $1 | grep bytes | cut -d ':' -f 2 | cut -d ' ' -f 1`
SPOUT0=`ifconfig $1 | grep bytes | cut -d ':' -f 3 | cut -d ' ' -f 1`
sleep 1s
SPIN1=`ifconfig $1 | grep bytes | cut -d ':' -f 2 | cut -d ' ' -f 1`
SPOUT1=`ifconfig $1 | grep bytes | cut -d ':' -f 3 | cut -d ' ' -f 1`
DSPIN=$(($SPIN1 - $SPIN0))
DSPOUT=$(($SPOUT1 - $SPOUT0))
DSPINKBIT=$(($DSPIN * 8 / 1000))
DSPOUTKBIT=$(($DSPOUT * 8 / 1000))
DSPINKB=$(($DSPIN / 1024))
DSPOUTKB=$(($DSPOUT / 1024))
echo "($1) IN: $DSPINKB KB/s - $DSPINKBIT kb/s OUT: $DSPOUTKB KB/s - $DSPOUTKBIT kb/s"
done
El script anterior nos da 2 medidas para la velocidad de entrada y salida. Kilobytes (en múltiplos de 8 y entre 1024) y kilobits (como les gusta calcularlos en redes; en bit y entre 1000).
De esa forma si nuestra conexión son 15 Mb se quedan en 1.78 MB reales:
15000000 / 8 / 1024 = 1831 KB / 1024 = 1.78 MB
No hay comentarios:
Publicar un comentario