El siguiente shell script muestra la velocidad actual de subida y bajada de la interfaz de red que elijas.
Copia el shell script en un fichero llamado, por ejemplo: net_speed.sh.
A continuación configuramos los permisos de ejecución:
$chmod a+x net_speed.shEl shell script se ejecuta pasándole como primer argumento la interfaz de red que quieres monitorear:
./net_speed.sh eth0Obtendremos una línea, al ejecutarlo, como esta:
ppp0 DOWN:15 KB/s UP:880 B/s
Este script funciona parseando el archivo /proc/net/dev y calculando la diferencia entre los bytes transmitidos o recibidos actualmente y hace un segundo.
#!/bin/bash# Este shell script muestra la velocidad de la red, tanto de subida como de subida como de bajada. # Uso:net_speed.sh interface# p.ej:net_speed.sh eth0# Variables globalesinterface=$1received_bytes=""old_received_bytes=""transmitted_bytes=""old_transmitted_bytes=""# Esta función parsea el fichero/proc/nec/devbuscando una línea que contenga los datos de$interface. # En esa línea, los números primero y noveno después de ':' son respectivamente los bytes recibidos y transmitidos.function get_bytes{line=$(cat /proc/net/dev | grep $interface | cut -d ':' -f 2 | awk '{print "received_bytes="$1, "transmitted_bytes="$9}')eval $line}# Función que calcula la velocidad usando el número de bytes actual y anterior. # La velocidad se muestra en KBytes por secundo cuando es mayor o igual a 1 KByte por segundo. # Esta funció se ejecuta cada segundo.function get_velocity{value=$1old_value=$2let vel=$value-$old_valuelet velKB=$vel/1000if [ $velKB != 0 ];thenecho -n "$velKB KB/s";elseecho -n "$vel B/s";fi}# Obtiene los valores iniciales.get_bytesold_received_bytes=$received_bytesold_transmitted_bytes=$transmitted_bytes# Muestra un mensaje y espera durante un segundo.echo "Starting...";sleep 1;echo "";# Bucle principal. Se repite sin fin.while true;do# Obtiene los nuevos valores de bytes transmitidos y recibidos.get_bytes# Calcula las velocidades.vel_recv=$(get_velocity $received_bytes $old_received_bytes)vel_trans=$(get_velocity $transmitted_bytes $old_transmitted_bytes)# Muestra los resultados en la consola.echo -en "$interface DOWN:$vel_recv\tUP:$vel_trans\r"# Actualiza los antiguos valores para realizar nuevos cálculos.calculations.old_received_bytes=$received_bytesold_transmitted_bytes=$transmitted_bytes# Espera un segundo.sleep 1;done
TRADUCIDO DE:
Shell Script that shows Network Speed
De gran ayuda, sobretodo saber la ubicación del archivo /proc/net/dev, gracias!!!
ResponderEliminar