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>
7 # check for conf file, else create with defaults
8 CONF
=/etc
/vpnstats.conf
9 if [ ! -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
19 # check for weekly crontab, else create it
20 CRON
=/etc
/cron.weekly
/vpnstats.cron
21 if [ ! -f $CRON ]; then
22 echo "#!/bin/bash" > $CRON
27 echo "Name,Login,Logout,Connected Minutes,Recieved Bytes,Transmitted Bytes" > $STATFILE
28 PPPDPID
=$
(grep "peer authentication succeeded" $LOGFILE | cut
-d [ -f2 | cut
-d ] -f 1)
29 while [ "$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%%")
43 MAILER
=$
(echo $
(locate sendEmail
) |
awk '{print$1}')
44 if [ "$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
49 if [ -f "/bin/mail" ]; then
50 cat $STATFILE |
/bin
/mail -s "VPNstats" $TO
52 echo "You need /bin/mail OR"
53 echo "the Perl program sendEmail located at http://freshmeat.net/projects/sendemail/"