59 lines
1.7 KiB
Bash
59 lines
1.7 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
print_bytes() {
|
||
|
if [ "$1" -eq 0 ] || [ "$1" -lt 1000 ]; then
|
||
|
bytes="0 kB/s"
|
||
|
elif [ "$1" -lt 1000000 ]; then
|
||
|
bytes="$(echo "$1/1000" | bc -l | LANG=C xargs printf "%.f\n") kB/s"
|
||
|
fi
|
||
|
|
||
|
echo "$bytes"
|
||
|
}
|
||
|
|
||
|
print_bit() {
|
||
|
if [ "$1" -eq 0 ] || [ "$1" -lt 10 ]; then
|
||
|
bit="0 B"
|
||
|
elif [ "$1" -lt 100 ]; then
|
||
|
bit="$(echo "$1*8" | bc -l | LANG=C xargs printf "%.f\n") B"
|
||
|
elif [ "$1" -lt 100000 ]; then
|
||
|
bit="$(echo "$1*8/1000" | bc -l | LANG=C xargs printf "%.f\n") K"
|
||
|
else
|
||
|
bit="$(echo "$1*8/1000000" | bc -l | LANG=C xargs printf "%.1f\n") M"
|
||
|
fi
|
||
|
|
||
|
echo "$bit"
|
||
|
}
|
||
|
|
||
|
INTERVAL=1
|
||
|
INTERFACES="enp0s31f6 wlp3s0"
|
||
|
|
||
|
declare -A bytes
|
||
|
|
||
|
for interface in $INTERFACES; do
|
||
|
bytes[past_rx_$interface]="$(cat /sys/class/net/"$interface"/statistics/rx_bytes)"
|
||
|
bytes[past_tx_$interface]="$(cat /sys/class/net/"$interface"/statistics/tx_bytes)"
|
||
|
done
|
||
|
|
||
|
while true; do
|
||
|
down=0
|
||
|
up=0
|
||
|
|
||
|
for interface in $INTERFACES; do
|
||
|
bytes[now_rx_$interface]="$(cat /sys/class/net/"$interface"/statistics/rx_bytes)"
|
||
|
bytes[now_tx_$interface]="$(cat /sys/class/net/"$interface"/statistics/tx_bytes)"
|
||
|
|
||
|
bytes_down=$((((${bytes[now_rx_$interface]} - ${bytes[past_rx_$interface]})) / INTERVAL))
|
||
|
bytes_up=$((((${bytes[now_tx_$interface]} - ${bytes[past_tx_$interface]})) / INTERVAL))
|
||
|
|
||
|
down=$(((( "$down" + "$bytes_down" ))))
|
||
|
up=$(((( "$up" + "$bytes_up" ))))
|
||
|
|
||
|
bytes[past_rx_$interface]=${bytes[now_rx_$interface]}
|
||
|
bytes[past_tx_$interface]=${bytes[now_tx_$interface]}
|
||
|
done
|
||
|
|
||
|
echo "ﯱ : $(print_bytes $down) / ﯱ : $(print_bytes $up) "
|
||
|
# echo "Download: $(print_bit $down) / Upload: $(print_bit $up)"
|
||
|
|
||
|
sleep $INTERVAL
|
||
|
done
|