¿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?

Painbrain
fuente

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.

Oli
fuente
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
terdon
fuente
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