#!/usr/bin/env sh

# ---- colors ----
RESET='\033[0m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
# ----------------

interface=$1
bytes=$2

prev_tx_traffic=0
prev_rx_traffic=0

while true; do
    clear
    tx_traffic=$(cat /sys/class/net/${interface}/statistics/tx_bytes)
    rx_traffic=$(cat /sys/class/net/${interface}/statistics/rx_bytes)
    tx_traffic_speed=$(($tx_traffic-$prev_tx_traffic))
    rx_traffic_speed=$(($rx_traffic-$prev_rx_traffic))
    # echo $tx_traffic_speed
    # echo $rx_traffic_speed
    prev_tx_traffic=$tx_traffic
    prev_rx_traffic=$rx_traffic

    traffic_color=$GREEN
    if [[ $(echo $(($rx_traffic/1024/1024/1024))) > 5 ]]; then
        traffic_color=$YELLOW
    elif [[ $(echo $(($rx_traffic/1024/1024/1024))) > 10 ]]; then
        traffic_color=$RED
    fi

    if [[ $bytes == 'k' ]] || [[ $bytes == 'K' ]]; then
        printf "$BLUE tx traffic speed$RESET = $(($tx_traffic_speed/1024)) Kb/s\n"
        printf "$BLUE tx traffic$RESET = $(($tx_traffic/1024)) Kb\n"
        printf "$BLUE rx traffic speed$RESET = $(($rx_traffic_speed/1024)) Kb/s\n"
        printf "$traffic_color rx traffic$RESET = $(($rx_traffic/1024)) Kb\n"
    fi

    if [[ $bytes == 'm' ]] || [[ $bytes == 'M' ]]; then
        printf "$BLUE tx traffic speed$RESET = $(($tx_traffic_speed/1024/1024)) Mb/s\n"
        printf "$BLUE tx traffic$RESET = $(($tx_traffic/1024/1024)) Mb\n"
        printf "$BLUE rx traffic speed$RESET = $(($rx_traffic_speed/1024/1024)) Mb/s\n"
        printf "$traffic_color rx traffic$RESET = $(($rx_traffic/1024/1024)) Mb\n"
    fi
    
    if [[ $bytes == 'g' ]] || [[ $bytes == 'G' ]]; then
        if [[ $(echo $(($tx_traffic/1024/1024/1024))) == 0 ]]; then
            printf "$BLUE tx traffic$RESET = $(($tx_traffic/1024/1024)) Mb\n"
        else
            printf "$BLUE tx traffic$RESET = $(($tx_traffic/1024/1024/1024)) Gb\n"
        fi
        if [[ $(echo $(($rx_traffic/1024/1024/1024))) == 0 ]]; then
            printf "$traffic_color rx traffic$RESET = $(($rx_traffic/1024/1024)) Mb\n"
        else
            printf "$traffic_color rx traffic$RESET = $(($rx_traffic/1024/1024/1024)) Gb\n"
        fi
    fi

    if [[ $bytes == 'b' ]] || [[ $bytes == '' ]]; then
        printf "$BLUE tx traffic$RESET = $(($tx_traffic)) b\n"
        printf "$traffic_color rx traffic$RESET = $(($rx_traffic)) b\n"
    fi
    
    sleep 1
done

