¿Cómo obtener las velocidades actuales de carga y descarga en la terminal?


10

Quiero que el terminal muestre las velocidades actuales de carga y descarga de mi conexión de red. No quiero monitorear las velocidades en tiempo real. Solo quiero un valor "estático" para poder escribirlo en un archivo.

¿Cómo lo logro?

Respuestas:


14

Curiosamente, la forma más fácil parece estar mirando /proc/net/dev. He escrito lo siguiente para comparar ese archivo dos veces (con un segundo retraso) y luego para restar los valores de bytes totales. En este caso em1es el adaptador de red, así que simplemente cámbielo a lo que necesite mirar.

awk '/em1/ {i++; rx[i]=$2; tx[i]=$10}; END{print rx[2]-rx[1] " " tx[2]-tx[1]}' \
 <(cat /proc/net/dev; sleep 1; cat /proc/net/dev)

La salida es dos números. Bytes recibidos por segundo seguidos de bytes enviados por segundo.


3
Aquí vamos. Lo resumí en una declaración awk. Bootiful
— Oli

11

Aquí hay una variación de la excelente solución de Oli:

awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
  <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)

Imprimirá el mismo resultado que el enfoque de Oli:

$ awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
>   <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
401500 30286

El primer valor es la velocidad de descarga en bytes por segundo y el segundo es la velocidad de carga. Puede obtener un formato más amigable para los humanos con:

$ awk '{if(l1){print ($2-l1)/1024"kB/s",($10-l2)/1024"kB/s"} else{l1=$2; l2=$10;}}' \
    <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
398.771kB/s 82.8066kB/s

Nota: en Ubuntu 18.04 tuve que usar en wlp1s0lugar de wlan0. No editaré la respuesta porque sé que esto depende de la distribución.
— Daniel Serodio
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.