Networking

Unix and Linux network configuration. Multiple network interfaces. Bridged NICs. High-availability network configurations.

Applications

Reviews of latest Unix and Linux software. Helpful tips for application support admins. Automating application support.

Data

Disk partitioning, filesystems, directories, and files. Volume management, logical volumes, HA filesystems. Backups and disaster recovery.

Monitoring

Distributed server monitoring. Server performance and capacity planning. Monitoring applications, network status and user activity.

Commands & Shells

Cool Unix shell commands and options. Command-line tools and application. Things every Unix sysadmin needs to know.

Home » Commands & Shells, Networking

Show NIC Bandwidth Utilization

Submitted by on January 15, 2016 – 12:43 am

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

 

Print Friendly, PDF & Email

Leave a Reply