#!/bin/bash
#####################################################################
#
# log_mail - EMails you a system report with or without
#              the end of the system log.
#          for use with 'crontab'
#
#   Original script by Steve Jones VK8SJ, Katherine NT Aust.
#    Sparked by an idea from Dave, VK4LED
#
# Usage:  add entry in crontab >>  log_mail [summary|all|snippet]
#        ** running with no report type, default id summary.
#
#
# Version   Date     Who      Wot..
#  1.0.0  13/01/12  VK8SJ, Original hack
#  1.1.0  13/01/12  VK8SJ, Added summary section
#  1.1.1  26/01/12  VK8SJ, Added uptime to message header
#  1.1.2  25/02/12  VK8SJ, Added file system data, reformatted report
#
#
######################################################################
#
#  Script Variables
#
Logfile="/home/irlp/log/messages"               # Log.. What log?
Workfile="/home/irlp/local/snip"                # Temp file location
Lines=200                                       # How much to send
#Mail_addr="vk2yld@dodo.com.au"                 # Email address
Mail_addr="servers@comptronics.com.au"          # Email address
#
######################################################################
#
function uptime(){
totalseconds=`cat /proc/uptime`
totalseconds=${totalseconds%%.*}
let days=$((${totalseconds}/86400))
let hours=$((${totalseconds}/3600%24))
let minutes=$((${totalseconds}/60%60))
let seconds=$((${totalseconds}%60))
sys_uptime="$days Days, $hours Hrs, $minutes Mins, $seconds Secs."
}
#
function filter-log() {
  rm -f /home/irlp/filtered.log
  grep -Eiv "beacon|temp|aprs|station id" $Logfile >> /home/irlp/filtered.log
  Logfile="/home/irlp/filtered.log"
}
#
#
function summary() {
  echo "================================================================ " >> $Workfile
  echo "                ***  LOG FILE SUMMARY ---  ***" >> $Workfile
  echo "================================================================ " >> $Workfile
  echo " Received DTMF for Calls & Controls.." >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
  cat $Logfile | grep -i "decode:" | cut -d" " -f-2,4,6- >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
  echo " Connections & Disconnections.." >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
  cat $Logfile | grep -i "connect" | cut -d" " -f-2,4,6-  >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
#  echo " Disconnections.." >> $Workfile
#  echo "----------------------------------------------------------------" >> $Workfile
#  cat $Logfile | grep -i "Disconnect" | cut -d" " -f-2,4,6-  >> $Workfile
#  echo "----------------------------------------------------------------" >> $Workfile
  echo " ERRORS.." >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
  cat $Logfile | grep -i "error" | cut -d" " -f-2,4,6-  >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
  echo " News Related.." >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
  cat $Logfile | grep -i "news" | cut -d" " -f-2,4,6-  >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
  echo " Cyclone Data.." >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
  cat $Logfile | grep -i "cyclone" | cut -d" " -f-2,4,6-  >> $Workfile
  echo "----------------------------------------------------------------" >> $Workfile
#  echo " whatever else you want.." >> $Workfile
#  echo "----------------------------------------------------------------" >> $Workfile
#  cat $Logfile | grep "whatever you want" | cut -d" " -f-2,4,6-  >> $Workfile
#  echo "----------------------------------------------------------------" >> $Workfile
  echo " " >> $Workfile
}
#
function snippet() {
  echo "================================================================ " >> $Workfile
  echo "       LOG FILE Extract. Last $Lines lines of file --- " >> $Workfile
  echo "       Time beacons, IDs and APRS have been filtered out." >> $Workfile
  echo "================================================================ " >> $Workfile
  tail -n$Lines $Logfile | cut -d" " -f-2,4,6-  >> $Workfile
}

#################### Work Starts here.. ################
#
rm -f $Workfile         # Make sure output file empty to start with
echo " Filtering log file.."
filter-log
echo " Done..."
uptime
NOW=`/bin/date '+%d%b%Y %T'`
echo "================================================================ " >> $Workfile
echo "             -----==: IRLP System Report... :==-----" >> $Workfile
echo "================================================================ " >> $Workfile
echo >> $Workfile
calls=`cat /home/irlp/custom/callcounter`
echo "Report Generated     :- $NOW" >> $Workfile
echo >> $Workfile
echo "System Calls to date :- $calls" >> $Workfile
echo "Node Uptime          :- $sys_uptime" >> $Workfile
echo -n "CPU Load             :- " >> $Workfile
top -bn1 | grep Cpu | cut -c 10- >> $Workfile
echo -n "Memory Usage         :- " >> $Workfile
top -bn1 | grep Mem | cut -c 9- >> $Workfile
echo -n "Swap File Usage      :- " >> $Workfile
top -bn1 | grep Swap | cut -c 9- >> $Workfile
echo >> $Workfile
echo "----------------------------------------------------------------" >> $Workfile
echo >> $Workfile
echo "File system details  :- " >> $Workfile
df -h >> $Workfile
echo >> $Workfile
echo "----------------------------------------------------------------" >> $Workfile
echo >> $Workfile
echo "Locked-Out IP Addresses {website and mail server attacks}" >> $Workfile
sudo /sbin/iptables -L INPUT -v -n >> $Workfile
case $1 in
summary)  summary
          request="IRLP Log Summary..." ;;
all)      summary
          snippet
          request="IRLP Log summary with $Lines line Snippet..." ;;
snippet)  snippet
          request="IRLP Log Snippet. Last $Lines lines..." ;;
1)        summary
          snippet
          request="IRLP Pre Log Rotation..." ;;
*)        summary
          request="IRLP Log Summary..." ;;
esac

echo "------------------------ Report ENDs. --------------------------" | mutt -s "$request" -i $Workfile $Mail_addr
#
## Comment this out if you DON'T want the email logged!!
echo "`date '+%b %d %Y %T %z'` ${0##*/}: Logfile extract Emailed. Rq=$request" >> $Logfile
##
#
rm -f $Workfile        # Cleanup before exit
