sabato 2 febbraio 2013

Linux: Monitorare la banda direttamente via shell

Un piccolo script utile a monitorare la banda in entrata e uscita di un'interfaccia di rete. Lo script si aggiorna ogni secondo stampando a video il consumo di banda (in "kb/s") direttamente sulla shell.
 #!/bin/bash  
 if [ -z "$1" ]; then  
     echo  
     echo usage: $0 network-interface  
     echo  
     echo e.g. $0 eth0  
     echo  
     exit  
 fi  
 IF=$1  
 while true  
 do  
     R1=`cat /sys/class/net/$1/statistics/rx_bytes`  
     T1=`cat /sys/class/net/$1/statistics/tx_bytes`  
     sleep 1  
     R2=`cat /sys/class/net/$1/statistics/rx_bytes`  
     T2=`cat /sys/class/net/$1/statistics/tx_bytes`  
     TBPS=`expr $T2 - $T1`  
     RBPS=`expr $R2 - $R1`  
     TKBPS=`expr $TBPS / 1024`  
     RKBPS=`expr $RBPS / 1024`  
     echo "tx $1: $TKBPS kb/s rx $1: $RKBPS kb/s"  
 done  

Copiamo e salviamo in un file sh e diamo i permessi di esecuzione:
chmod +x status_rete.sh

Esempio d'uso:
 root@misscappalorina:~# ./status_rete.sh eth0  
 tx eth0: 15 kb/s rx eth0: 27 kb/s  
 tx eth0: 23 kb/s rx eth0: 39 kb/s  
 tx eth0: 39 kb/s rx eth0: 94 kb/s  
 tx eth0: 48 kb/s rx eth0: 46 kb/s  
 tx eth0: 63 kb/s rx eth0: 123 kb/s  
 tx eth0: 62 kb/s rx eth0: 38 kb/s  
 tx eth0: 66 kb/s rx eth0: 46 kb/s  
 tx eth0: 23 kb/s rx eth0: 69 kb/s  
 tx eth0: 54 kb/s rx eth0: 69 kb/s  
 tx eth0: 113 kb/s rx eth0: 168 kb/s  
 tx eth0: 185 kb/s rx eth0: 249 kb/s  
 tx eth0: 165 kb/s rx eth0: 266 kb/s  
 tx eth0: 185 kb/s rx eth0: 231 kb/s  
 tx eth0: 211 kb/s rx eth0: 223 kb/s  
 tx eth0: 6 kb/s rx eth0: 15 kb/s  
 tx eth0: 16 kb/s rx eth0: 46 kb/s  
 tx eth0: 27 kb/s rx eth0: 42 kb/s  
 tx eth0: 32 kb/s rx eth0: 16 kb/s  
 tx eth0: 12 kb/s rx eth0: 29 kb/s  
 tx eth0: 8 kb/s rx eth0: 18 kb/s