83 lines
2 KiB
Bash
Executable file
83 lines
2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
INTERVAL=3
|
|
# interfaces for desktop and laptop
|
|
INTERFACES="enp6s0 wlp0s29u1u1 wlp56s0"
|
|
|
|
print_bytes() {
|
|
if [ "$1" -eq 0 ] || [ "$1" -lt 1000 ]; then
|
|
bytes="0"
|
|
elif [ "$1" -lt 1000000 ]; then
|
|
bytes="$(echo "scale=0;$1/1000" | bc -l)k"
|
|
else
|
|
bytes="$(echo "scale=1;$1/1000000" | bc -l)M"
|
|
fi
|
|
|
|
echo "$bytes"
|
|
}
|
|
|
|
print_bit() {
|
|
if [ "$1" -eq 0 ] || [ "$1" -lt 10 ]; then
|
|
bit="0 B"
|
|
elif [ "$1" -lt 100 ]; then
|
|
bit="$(echo "scale=0;$1*8" | bc -l) B"
|
|
elif [ "$1" -lt 100000 ]; then
|
|
bit="$(echo "scale=0;$1*8/1000" | bc -l) K"
|
|
else
|
|
bit="$(echo "scale=1;$1*8/1000000" | bc -l) M"
|
|
fi
|
|
|
|
echo "$bit"
|
|
}
|
|
|
|
declare -A bytes
|
|
|
|
get_initial_throughput() {
|
|
for interface in $INTERFACES; do
|
|
|
|
local dir="/sys/class/net/$interface"
|
|
if [ -d "$dir" ]; then
|
|
bytes[past_rx_$interface]="$(cat "$dir"/statistics/rx_bytes)"
|
|
bytes[past_tx_$interface]="$(cat "$dir"/statistics/tx_bytes)"
|
|
fi
|
|
|
|
done
|
|
}
|
|
|
|
get_throughput() {
|
|
while true; do
|
|
down=0
|
|
up=0
|
|
|
|
for interface in $INTERFACES; do
|
|
local dir="/sys/class/net/$interface"
|
|
if [ -d "$dir" ]; then
|
|
bytes[now_rx_$interface]="$(cat "$dir"/statistics/rx_bytes)"
|
|
bytes[now_tx_$interface]="$(cat "$dir"/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]}
|
|
fi
|
|
done
|
|
|
|
if [ "$down" -gt 1000 ] || [ "$up" -gt 1000 ]; then
|
|
echo " $(print_bytes $down) 祝$(print_bytes $up)"
|
|
else
|
|
echo ""
|
|
fi
|
|
|
|
# echo "Download: $(print_bytes $down) / Upload: $(print_bytes $up)"
|
|
# echo "Download: $(print_bit $down) / Upload: $(print_bit $up)"
|
|
|
|
sleep $INTERVAL
|
|
done
|
|
}
|
|
|
|
get_initial_throughput
|
|
get_throughput
|