Cover V06, I11
Article
Listing 1
Listing 2
Listing 3

nov97.tar


Listing 2: ForgetMeNot

# ForgetMeNot -- test if autobackup was performed last night
# Author: Donald Bryson dbryson@tclock.com -- http://www.tclock.com
# For distribution by Sys Admin Magazine -- http://www.samag.com
# Last Revision Date: 7/31/97

# This script returns 4 valid exit values
#     1 -- Backup should not be checked today
#     2 -- Backup was scheduled but not complete and the system is
#          configured to allow the user to log into the system anyway
#     3 -- Backup was scheduled and performed.
#     4 -- Backup was scheduled but not complete and the system is
#           configured to disallow logging into the system.

# **************************************************************************
# Read the configuration file and chnage to the our work directory
# You can store the configuration file in /etc/default or any other directory
configdir=/etc/default/

if [ -f "$configdir"CheckNBack.cfg ]
then . "$configdir"CheckNBack.cfg
else
echo "warning: CheckNBack.cfg not found"
read Dummy
exit 1
fi

# ************************************************************************
# Check to see if the ForgetMeNot/CheckNBack system is disabled and exit
# if it is disabled.
if [ "$DISABLE" = "YES" ]
then echo "ForgetMeNot/CheckNBack is disabled."
exit 1
fi

# Change to the work directory of CheckNBack/ForgetMeNot
cd $CBDIR

# ************************************************************************
# Because the system is backing up via cron, the system having the
# correct date is very important.  This function gives the users the
# opportunity to detect an incorrect system date
VerifyDate() {
clear
echo Please advise support if the current date and time is not
echo "              " `date`
echo
echo "...Enter to continue"
read Dummy
}

if [ "$VERIFYDATE" = "YES" ]
then VerifyDate
fi

# ************************************************************************
# Calculate the date information and store into BackupTime and DayOfWeek
# BackupTime is used to compare the log entry in CheckNBack.log
BackupTime=`date +%y%d%m`

# The day of the week as a number -- this is used to compare with
# NOCHECK to disable checking on days that should not be checked
DayOfWeek=`date +%w`
# Check to see what days of the week to check the log
for nobd_day in $NOBACKUP
do
if [ $nobd_day -eq $DayOfWeek ]
then echo "Backup should not be checked today."
exit 1
fi
done

# ************************************************************************
# The functions for giving warning or explaining why they can't log into
# the system
GiveWarning() {
clear
echo
echo "     SCHEDULED BACKUP FAILED OR NOT ATTEMPTED!"
echo
echo "        CONTACT YOUR SUPPORT DEPARTMENT."
echo
echo "...Press ENTER to continue"
read Dummy
}

ExplainNologin() {
echo
echo
echo "You may not log into your system until problem is resolved."
echo
echo "...Press ENTER to continue"
read Dummy
}

# ************************************************************************
# if NOLOGIN is is set to YES and there is an errror then the script returns
# 4 which is interpreted by the .profile as no login allowed.  If NOLOGIN
# is not set to YES then warn the user and return 2
# if the backup occured, return 3 which is interpreted by the .profile as
# no problem with backup.
echo "Checking your backup log for last night"
BackupProb() {
GiveWarning
if [ "$NOLOGIN" = "YES" ]
then ExplainNologin
if [ ! "$LOGNAME" = "root" ]
then exit 4
else
echo "Allowing login anyway because you are root"
read Dummy
exit 2
fi

else
GiveWarning
exit 2
fi
}

WASDONE=`grep $BackupTime CheckNBack.log`

if [ ! "$WASDONE" ]
then BackupProb
else
echo "Backup looks OK."
exit 3
fi

# End of File