#!/bin/sh
#
# Title:     bb-backup.sh
# Author:    Craig Cook   ( cncook @ usa "dot" net)
# Date:      12 March 2001
# Purpose:   Check the status of the most recent backup and report back to
#            the "Big Brother" display master.
#            Feel free to modify this script for your own purposes.
#              (Let me know of any useful enhancements/patches)
#            Format taken from Sean and Roberts scripts
# Platforms: Solaris
#            (Should work on others)
# Tested:    bb 17a
#
# History: 1.0  12/04/01  Craig Cook
#              * Initial version (Based on a script written by Greg Clough)
#

# To test from the command line
# change to your BBHOME directory
# then
# cd ext
# export BBHOME=...
# . ../etc/bbdef.sh
# at the end of this script comment out the "$BB $BBDISP" line
# and uncomment the "#echo $LINE" line
# then at the prompt
# ./bb-backup.sh
# Fix script 'til it works :)
# Then uncomment "#$BB $BBDISP" line and comment out  "echo $LINE" line

# Sample output from summary_log file (that this script is looking for)
#      SUCCESS: Backup succeeded on 001121.
#      ERROR: Backup failed on 001122.

#
#
# SCRIPTS IN THE BBHOME/ext DIRECTORY ARE ONLY RUN IF
# LISTED IN THE BBEXT VARIABLE OF $BBHOME/runbb.sh
# THIS IS FOR SECURITY.
#

#
# BBPROG SHOULD JUST CONTAIN THE NAME OF THIS FILE
# USEFUL WHEN YOU GET ENVIRONMENT DUMPS TO LOCATE
# THE OFFENDING SCRIPT...
#
BBPROG=bb-backup.sh; export BBPROG

#
# TEST NAME: THIS WILL BECOME A COLUMN ON THE DISPLAY
# IT SHOULD BE AS SHORT AS POSSIBLE TO SAVE SPACE...
# NOTE YOU CAN ALSO CREATE A HELP FILE FOR YOUR TEST
# WHICH SHOULD BE PUT IN www/help/$TEST.html.  IT WILL
# BE LINKED INTO THE DISPLAY AUTOMATICALLY.
#
TEST="bup"

#
# BBHOME CAN BE SET MANUALLY WHEN TESTING.
# OTHERWISE IT SHOULD BE SET FROM THE BB ENVIRONMENT
#
# BBHOME=/usr/local/bb; export BBHOME   # FOR TESTING

if test "$BBHOME" = ""
then
        echo "BBHOME is not set... exiting"
        exit 1
fi

if test ! "$BBTMP"                      # GET DEFINITIONS IF NEEDED
then
         # echo "*** LOADING BBDEF ***"
        . $BBHOME/etc/bbdef.sh          # INCLUDE STANDARD DEFINITIONS
fi

#
# Initialize variables
#
COLOR="green"
LINE=""
DATE="`date '+ %y%m%d'`"                # date to look for in log file
TODAY="`date +%w`"			    # today expressed as a number

#
# Begin section to put in bbsys.local
#
BACKUP_PATH=/backups
BACKUP_LOG_FILE=summary_log
BACKUP_SUMMARY_LOG="$BACKUP_PATH/$BACKUP_LOG_FILE"
BACKUP_DAYS="23456"                     #[0,6] 0 = sunday 
BACKUP_NUM_LINES=10			    # num of lines from summary log to display
BACKUP_DATE_FORMAT=YYMMDD
BACKUP_DATE_FORMAT_LINE="Date format $BACKUP_DATE_FORMAT"
BACKUP_LAST_LINES="`$TAIL -$BACKUP_NUM_LINES $BACKUP_SUMMARY_LOG`"

export BACKUP_PATH BACKUP_LOG_FILE BACKUP_SUMMARY_LOG BACKUP_DAYS
export BACKUP_NUM_LINES BACKUP_DATE_FORMAT BACKUP_DATE_FORMAT_LINE LAST_LINES

#
# End of section to put in bbsys.local
#

#WARN="10"                             # GO YELLOW AT THIS LEVEL
PANIC="ERROR"                          # GO RED AND PAGE AT THIS LEVEL

#
# Check the status of the BACKUP (only if one was scheduled for today)
#
if test "`echo $BACKUP_DAYS | $GREP $TODAY`" = ""
then
        LINE="No backup scheduled for today"
        COLOR="clear"
        BACKUP_DATE_FORMAT_LINE=""
else
        LINE="`$CAT $BACKUP_SUMMARY_LOG | $GREP \"$DATE\" `"
#        echo $LINE > $BBTMP/OUTPUT.$$
        # Get last entry in log file
        LAST_LINE="`$TAIL -1 $BACKUP_SUMMARY_LOG`"
fi

#
# If we can't find the backup then set a WARNING error
#
if test "$LINE" = ""
then
                LINE="Backup for $DATE aborted or incomplete"
                COLOR="yellow"
                BACKUP_DATE_FORMAT_LINE=""
fi

#
# If we found any errors then set a PANIC error
#
if test "`echo $LINE | $GREP $PANIC`" != ""
then
                LINE="BACKUP PROBLEM: $LAST_LINE"
                COLOR="red"
fi

#
# AT THIS POINT WE HAVE OUR RESULTS.  NOW WE HAVE TO SEND IT TO
# THE BBDISPLAY TO BE DISPLAYED...
#

#
# THE FIRST LINE IS STATUS INFORMATION... STRUCTURE IMPORANT!
# THE REST IS FREE-FORM - WHATEVER YOU'D LIKE TO SEND...
#
LINE="status $MACHINE.$TEST $COLOR `date`

Checking file located at $BACKUP_SUMMARY_LOG

$BACKUP_DATE_FORMAT_LINE

$LINE

Summary of last $BACKUP_NUM_LINES lines in log file

$BACKUP_LAST_LINES
"

#
# NOW USE THE BB COMMAND TO SEND THE DATA ACROSS
#echo $LINE
$BB $BBDISP "$LINE"                     # SEND IT TO BBDISPLAY

#
# END OF bb-backup.sh

#
