#!/bin/bash sleep=1 int=$(ip addr show | grep "192\.168\.2\." | awk '{ print $NF }') [ -n "$1" ] && int="$1" stats1=($(ethtool -S $int | grep -P "rx\d?_(packets|bytes)" | awk '{ print $2 }')) sleep $sleep stats2=($(ethtool -S $int | grep -P "rx\d?_(packets|bytes)" | awk '{ print $2 }')) for i in "${!stats1[@]}"; do diff=$(bc <<< "(${stats2[$i]} - ${stats1[$i]}) / $sleep") if [ $((i & 1)) -eq 0 ]; then if [ $i -lt 2 ]; then echo -n "Total:" elif [ $i -lt 4 ]; then echo -n "Phi :" else echo -n "Queue:" fi printf "packets: %9.3f kpps" $(bc -l <<< "1 * $diff / 1000") else printf ", bandwidth: %9.3f Gb/s\n" $(bc -l <<< "8. * $diff / 1024 / 1024 / 1024") fi #echo $i done