Show NIC Bandwidth Utilization
Just a quick script that will measure bandwidth utilization in KB/s for all NICs on your server over the specified period of time. You can call the script with an optional time wait parameter in seconds.
Sample output:
root@ncc1701# /var/adm/bin/nic_traffic.sh 10s Waiting... bond0: 16099 KB/s eth0: 0 KB/s eth1: 0 KB/s eth2: 0 KB/s eth3: 0 KB/s eth4: 0 KB/s eth5: 16442 KB/s
And here’s the script (nic_traffic):
#!/bin/bash
if [[ ! -z "" ]] && [[ "" =~ ^-?[0-9]+$ ]]
then
s=""
else
s=5
fi
d="/sys/class/net"
nics=`/sbin/ifconfig -a | egrep -o -e "[a-z][a-z]*[0-9]*[ ]*(Link|: .*<)" | \
sed -e 's/://g' | awk '{print $1}' | grep -v "^lo$"`
for i in nic rx1 tx1 rx2 tx3
do
unset array_${i}
done
i=0
for nic in ${nics}
do
array_nic[$i]=${nic}
array_rx1[$i]=$(cat ${d}/${nic}/statistics/rx_bytes)
array_tx1[$i]=$(cat ${d}/${nic}/statistics/tx_bytes)
(( i++ ))
done
echo "Waiting..."
secs=${s}
while [ ${secs} -gt 0 ]; do
echo -ne "${secs}3[0K\r"
sleep 1
: $((secs--))
done
i=0
for nic in ${nics}
do
array_rx2[$i]=$(cat ${d}/${nic}/statistics/rx_bytes)
array_tx2[$i]=$(cat ${d}/${nic}/statistics/tx_bytes)
(( i++ ))
done
i=0
for nic in `echo "${array_nic[@]}"`
do
echo -n "${nic}: "
printf '%s\n' "scale=0;(`echo ${array_rx2[$i]}`-`echo ${array_rx1[$i]}`)/(${s}*1024)"|bc -l | tr '\n' ' '
echo "KB/s"
(( i++ ))
done | column -t
