#!/bin/sh
#
# This script is copyright 2001 by A.L.Lambert.  It is distributed under the
# GNU public license.  If you don't know what this means, I suggest you point
# a web browser at www.gnu.org and find out.
#
# Usage: I use this script to monitor my logfiles on a regular basis, and e-mail
# me when events I've not previously defined as "OK" happen.  I am not going to 
# hold your hand too far in this, as I expect you to be able to code simple
# shell script and know a bit about what you're doing before you get here. :)
#
# YOU MUST CREATE /etc/lt_watch/logtool.conf BEFORE YOU RUN THIS SCRIPT!!!!!!
# The easiest way to do this is cp -rapfvd /etc/logtool /etc/lt_watch/
#
# SEASON THIS CONFIGURATION INFO TO SUIT YOUR SYSTEM BEFORE USING THIS SCRIPT!
logfiles="/var/log/maillog /var/log/messages /var/log/secure"
mailto="me@mydomain.ext someoneelse@someotherdomain.ext"
pagemail="mypager@mypagercompany.net"

# the code for these will most likely need to be edited for non-Linux systems
# If you don't know how to do such editing below, SET THESE ALL TO "NO"!!!!
tcpstats="yes"
logusers="yes"
lastlog="yes"
proclist="yes"

# we need a tempfile name
# see if we've got mktmp, and if we do, use it.
if [ -x `which mktemp` ] ; then
tnpfile=`mktemp -q /tmp/$0.XXXXXX`
	if [ $? -ne 0 ]; then
		# oops; we got it, but it's not working right; complain to user about it
		echo "$0: Can't create temp file, exiting..."
                exit 1
	fi
else 
# NOT INCREDIBLY SECURE!!! DO SOMETHING BETTER IF YOU WANT
tmpfile=/tmp/$$.$RANDOM.$$.logtool.check
fi


# touch the run file
touch /var/run/logtool.check

# for each logfile, see if there's anything new to report
for i in $logfiles ; do
retail $i | logtool -c /etc/logwatch/logtool.conf >> $tmpfile
done

# if we found anything, load it into a memory variable
found="`head $tmpfile`"

# if there wasn't nothing found, then we can bail out
if [ "$found" = "" ] ; then
rm -f $tmpfile /var/run/logtool.check
exit 0
else

# Houston, we might possibly have a problem... Let's e-mail someone about it, shall we?

# if the user wants TCP stats with their report
if [ "$tcpstats" = "yes" ; then
echo "
-----------------------------------------------------------------------------
Current TCP/IP status" >> $tmpfile
netstat -nap >> $tmpfile
fi

# if they want to know who's currently logged on and doing what
if [ "$logusers" = "yes" ] ; then
echo "
-----------------------------------------------------------------------------
Currently logged in users: " >> $tmpfile
w >> $tmpfile
fi

# if they want to know who's the last users logged on
if [ "$lastlog" = "yes" ] ; then
echo "
-----------------------------------------------------------------------------
Current last log: " >> $tmpfile
last >> $tmpfile
fi

# if they want to know the current proclist
if [ "$proclist" = "yes" ] ; then
echo "
-----------------------------------------------------------------------------
Current process list: " >> $tmpfile
ps auxfwwwwww >> $tmpfile
fi

# pump that tmpfile into the mail post-haste.
cat $tmpfile | mail -s "Logwatch report `date`" $mailto
rm -f $tmpfile /var/run/logtool.check

# and a quick pager message to make sure he knows to check...
if [ "$pagemail" -ne "" ] ; then
echo "Check your regular e-mail for unusual log activity" | mail -s "Log Activity" $pagemail
fi

fi # if found != "" end FI

exit 0



syntax highlighted by Code2HTML, v. 0.9.1