
Quiero obtener RX y TX de cada adaptador de red, así que para obtener RX y TX de un adaptador de red, utilicé estos comandos:
cat /proc/net/dev | grep 'wlan0' |awk '{if ($2) print $2}' | awk -v var="$(date +"%Y-%m-%d %r")" '{print $1"&",var";"}' >> /opt/baran/log/baran_RX_usage_$(date +"%Y-%m-%d");
cat /proc/net/dev | grep 'wlan0' |awk '{if ($10) print $10}' | awk -v var="$(date +"%Y-%m-%d %r")" '{print $1"&",var";"}' >> /opt/baran/log/baran_TX_usage_$(date +"%Y-%m-%d");
Como puede ver, puse el resultado en un archivo con fecha (diariamente). Quiero que esto en un bucle while obtenga todos los adaptadores de red en lugar de solo wlan0, por lo que debemos tener algunos archivos de registro como:
opt/baran/log/baran_TX_usage_wlan0_2014-01-01
opt/baran/log/baran_RX_usage_wlan0_2014-01-01
opt/baran/log/baran_TX_usage_eth0_2014-01-01
opt/baran/log/baran_RX_usage_eth0_2014-01-01
opt/baran/log/baran_TX_usage_eth1_2014-01-01
opt/baran/log/baran_RX_usage_eth1_2014-01-01
opt/baran/log/baran_TX_usage_eth2_2014-01-01
opt/baran/log/baran_RX_usage_eth2_2014-01-01
opt/baran/log/baran_TX_usage_eth3_2014-01-01
opt/baran/log/baran_RX_usage_eth3_2014-01-01
Como puede ver, tengo un adaptador inalámbrico y 4 eth, y quiero un archivo de registro para cada uno de ellos diariamente.
Gracias
Respuesta1
¿Qué tal si utilizamos API del kernel más sencillas?
for iface in /sys/class/net/*; do
# might want to filter out the 'lo' interface
read rx_bytes < "$iface"/statistics/rx_bytes
read tx_bytes < "$iface"/statistics/tx_bytes
day="$(date +"%Y-%m-%d")"
time="$(date +"%r")"
printf "%s& %s %s;" "$rx_bytes" "$day" "$time" >> /opt/baran/log/baran_RX_usage_"$day"
printf "%s& %s %s;" "$tx_bytes" "$day" "$time" >> /opt/baran/log/baran_TX_usage_"$day"
done