#!/bin/bash

INTERVAL=3
INTERFACES="enp6s0 wlp0s29u1u1"

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

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

  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