diff --git a/scripts/network_bandwidth.sh b/scripts/network_bandwidth.sh index b560812..b381e24 100755 --- a/scripts/network_bandwidth.sh +++ b/scripts/network_bandwidth.sh @@ -37,23 +37,38 @@ interface_get() { echo "$name" } -# interface_bytes give interface name and signal tx/rx return Bytes +# interface_bytes give an interface name and return both tx/rx Bytes, separated by whitespace (upload first) interface_bytes() { - cat "/sys/class/net/$1/statistics/$2_bytes" + case "$(uname -s)" in + Linux) + upload=$(cat "/sys/class/net/$1/statistics/tx_bytes") + download=$(cat "/sys/class/net/$1/statistics/rx_bytes") + + echo "$upload $download" + ;; + Darwin) + # column 7 is Ibytes (in bytes, rx, download) and column 10 is Obytes (out bytes, tx, upload) + netstat -nbI "$1" | tail -n1 | awk '{print $10 " " $7}' + ;; + esac } # get_bandwidth return the number of bytes exchanged for tx and rx get_bandwidth() { - upload="$(interface_bytes "$1" "tx")" - download="$(interface_bytes "$1" "rx")" + local upload=0 + local download=0 - #wait the interval for Wait for interval to calculate the difference + IFS=' ' read -r upload download <<< "$(interface_bytes "$1")" + + # wait for interval to calculate the difference sleep "$INTERVAL" - upload="$(bc <<<"$(interface_bytes "$1" "tx") - $upload")" - download="$(bc <<<"$(interface_bytes "$1" "rx") - $download")" + IFS=' ' read -r new_upload new_download <<< "$(interface_bytes "$1")" - #set to 0 by default useful for non-existent interface + upload=$(( $new_upload - $upload )) + download=$(( $new_download - $download )) + + # set to 0 by default echo "${upload:-0} ${download:-0}" }