User login

Bash script to measure bandwidth

×

Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in menu_set_active_trail() (line 2405 of /home/steelsmi/public_html/includes/menu.inc).

I wrote a bash script to measure the amount of bandwidth, and to count the number of connections to the server, and used cron to run it once an hour. The results are written to a log. It works nicely, although I'm guessing my math is off a bit in calculating the bandwidth.

This was made to keep an eye on our web cam at my place of employment. It measures the bandwidth over 30 seconds during the run.


#!/bin/bash

CONN=`netstat -nt | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | sort -n | uniq | wc -l`
DATE=`date '+%D | %r'`

BR1=`cat /sys/class/net/eth0/statistics/rx_bytes`
BT1=`cat /sys/class/net/eth0/statistics/tx_bytes`
sleep 30
BR2=`cat /sys/class/net/eth0/statistics/rx_bytes`
BT2=`cat /sys/class/net/eth0/statistics/tx_bytes`

INKB=$(((($BR2-$BR1) /30) /1024))
OUTKB=$(((($BT2-$BT1) /30) /1024))

echo "$DATE | $CONN | $INKB KB/s In (eth0) | $OUTKB KB/s Out (eth0)" >> /var/log/camstatlog

exit 0

Comments

Thanks Jacob, that script really helped me!

thanks !