1#!/bin/bash 2# 3# vpnstats Get commaseparated file and mail it to the admin 4# Version 1.0 beta by Richard de Vroede - Linvision BV <richard@linvision.com> 5# 6 7# check for conf file, else create with defaults 8CONF=/etc/vpnstats.conf 9if [ ! -f $CONF ]; then 10 echo "LOGFILE=/var/log/messages.1" > $CONF 11 echo "STATFILE=/var/log/vpnstats" >> $CONF 12 echo "TEMPFILE=/tmp/tmpvpnstats" >> $CONF 13 echo "SMTP=localhost" >> $CONF 14 echo "FROM=" >> $CONF 15 echo "TO=" >> $CONF 16fi 17. $CONF 18 19# check for weekly crontab, else create it 20CRON=/etc/cron.weekly/vpnstats.cron 21if [ ! -f $CRON ]; then 22 echo "#!/bin/bash" > $CRON 23 echo "$0" >> $CRON 24 chmod 755 $CRON 25fi 26 27echo "Name,Login,Logout,Connected Minutes,Recieved Bytes,Transmitted Bytes" > $STATFILE 28PPPDPID=$(grep "peer authentication succeeded" $LOGFILE | cut -d [ -f2 | cut -d ] -f 1) 29while [ "$PPPDPID" != "" ]; do 30 PID=$(echo $PPPDPID | awk '{print $1}') 31 grep $PID $LOGFILE | grep pppd | grep -v pptpd > $TEMPFILE 32 NAME=$(grep "succeeded for" $TEMPFILE | awk -F "succeeded for" '{print $2}' | cut -d " " -f 2) 33 LOGIN=$(grep "succeeded for" $TEMPFILE | cut -d " " -f 1-3) 34 LOGOUT=$(grep "Connect time" $TEMPFILE | cut -d " " -f 1-3) 35 CONNECT=$(grep "Connect time" $TEMPFILE | cut -d ] -f 2 | cut -d " " -f 4) 36 RXB=$(grep "Sent" $TEMPFILE | cut -d ] -f 2 | cut -d " " -f 3) 37 TXB=$(grep "Sent" $TEMPFILE | cut -d ] -f 2 | cut -d " " -f 6) 38 echo "$NAME,$LOGIN,$LOGOUT,$CONNECT,$RXB,$TXB" >> $STATFILE 39 PPPDPID=$(echo $PPPDPID | sed "s%$PID%%") 40 rm -f $TEMPFILE 41done 42 43MAILER=$(echo $(locate sendEmail) | awk '{print$1}') 44if [ "$MAILER" != "" ]; then 45 if [ "$FROM" = "" ]; then FROM=root@`uname -n`; fi 46 if [ "$TO" = "" ]; then TO=root@localhost; fi 47 $MAILER -s $SMTP -u "VPNstats" -f $FROM -t $TO -m " " -a $STATFILE 48else 49 if [ -f "/bin/mail" ]; then 50 cat $STATFILE | /bin/mail -s "VPNstats" $TO 51 else 52 echo "You need /bin/mail OR" 53 echo "the Perl program sendEmail located at http://freshmeat.net/projects/sendemail/" 54 fi 55fi 56