#!/bin/bash RRDTOOL=/usr/bin/rrdtool STATSDIR=/var/www/wan-stats # Internal interface AKA 0 IFINT="enp5s0" # External interface AKA 1 IFEXT="enp3s0" cd "${STATSDIR}/" # Current byte count (64 bit signed int?) CURETH0IN=$( /sbin/ifconfig "${IFINT}" | grep "RX packets" | sed -re "s/RX packets ([0-9]+) .*$2 bytes ([0-9]+).*/\2/g" ) CURETH0OUT=$( /sbin/ifconfig "${IFINT}" | grep "TX packets" | sed -re "s/TX packets ([0-9]+) .*$2 bytes ([0-9]+).*/\2/g" ) CURETH1IN=$( /sbin/ifconfig "${IFEXT}" | grep "RX packets" | sed -re "s/RX packets ([0-9]+) .*$2 bytes ([0-9]+).*/\2/g" ) CURETH1OUT=$( /sbin/ifconfig "${IFEXT}" | grep "TX packets" | sed -re "s/TX packets ([0-9]+) .*$2 bytes ([0-9]+).*/\2/g" ) # Previous byte count PREVETH0IN=$( cat eth0in ) PREVETH0OUT=$( cat eth0out ) PREVETH1IN=$( cat eth1in ) PREVETH1OUT=$( cat eth1out ) if [ $CURETH0IN -gt $PREVETH0IN ] then ETH0INDIFF=$(( CURETH0IN - PREVETH0IN )) else ETH0INDIFF=0 fi if [ $CURETH0OUT -gt $PREVETH0OUT ] then ETH0OUTDIFF=$(( CURETH0OUT - PREVETH0OUT )) else ETH0OUTDIFF=0 fi if [ $CURETH1IN -gt $PREVETH1IN ] then ETH1INDIFF=$(( CURETH1IN - PREVETH1IN )) else ETH1INDIFF=0 fi if [ $CURETH1OUT -gt $PREVETH1OUT ] then ETH1OUTDIFF=$(( CURETH1OUT - PREVETH1OUT )) else ETH1OUTDIFF=0 fi ETH0INDIFF=$(( ETH0INDIFF / 300 )) ETH0OUTDIFF=$(( ETH0OUTDIFF / 300 )) ETH1INDIFF=$(( ETH1INDIFF / 300 )) ETH1OUTDIFF=$(( ETH1OUTDIFF / 300 )) echo $ETH0INDIFF echo $ETH0OUTDIFF echo $ETH1INDIFF echo $ETH1OUTDIFF # Update the database file with the latest values. $RRDTOOL update \ $STATSDIR/net.rrd \ N:$ETH0INDIFF:$ETH0OUTDIFF:$ETH1INDIFF:$ETH1OUTDIFF # Store the data for the next time echo $CURETH0IN > eth0in echo $CURETH0OUT > eth0out echo $CURETH1IN > eth1in echo $CURETH1OUT > eth1out # Graph "${STATSDIR}/graph_net_values" # Uncomment for ping times. # You don't need a separate ping crontab entry for ping if you uncomment this. #"${STATSDIR}/get_ping_values"