initial commit of a *whole bunch* of old Egressive shell scripts, used to make many people redundant.
This commit is contained in:
commit
43e0f5b59e
329 changed files with 31937 additions and 0 deletions
159
egalert/egalert
Executable file
159
egalert/egalert
Executable file
|
@ -0,0 +1,159 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# File: egalert
|
||||
#
|
||||
# egalert - script's checking & alerting tool
|
||||
# Handles all alert checking for all egressive scripts
|
||||
|
||||
# Usage: egalert FUNCTION DAYSTAMP-SCRIPT_NAME
|
||||
|
||||
# Author: Marek Kuziel (marek@egressive.com)
|
||||
|
||||
# Variables
|
||||
#----------
|
||||
# Directory settings
|
||||
EGALERT_DIR=/etc/egscripts/egalert
|
||||
EGALERT_BIN_DIR=`dirname $0`
|
||||
EGALERT_LOG_DIR=/var/log/egalert
|
||||
EGALERT_STATUS_DIR=$EGALERT_LOG_DIR/status
|
||||
|
||||
# Mail related stuff
|
||||
MAINTAINER="dave@egressive.com"
|
||||
MAIL_CMD=/bin/mail
|
||||
MAIL_TO=""
|
||||
MAIL_CC=""
|
||||
MAIL_BCC="$MAINTAINER"
|
||||
MAIL_SUBJECT="EGAlert"
|
||||
MAIL_CONTENT=$EGALERT_BIN_DIR/tmp.txt
|
||||
|
||||
# *stamp
|
||||
DAYSTAMP=`date '+%Y-%m-%d'`
|
||||
TIMESTAMP=`date '+%Y-%m-%d %H:%M'`
|
||||
TIMESTAMP_FULL=`date '+%Y-%m-%d %H:%M:%S'`
|
||||
|
||||
#Debug
|
||||
EGALERT_DEBUG=1 # To switch on egalert script log for debugging set this to 1
|
||||
EGALERT_DEBUG_LOG=$EGALERT_LOG_DIR/$DAYSTAMP.log # DAYSTAMP is more usefull for debugging 'cos creates just one file
|
||||
EGALERT_DAILY_LOG=$EGALERT_LOG_DIR/egalert-daily-$DAYSTAMP.log
|
||||
|
||||
if [ 1 == $EGALERT_DEBUG ]
|
||||
then
|
||||
exec 10>> $EGALERT_DEBUG_LOG
|
||||
exec 2>&10
|
||||
exec 1>&10
|
||||
else
|
||||
exec 10>> /dev/null
|
||||
exec 2>&10
|
||||
exec 1>&10
|
||||
fi
|
||||
|
||||
# Functions
|
||||
#----------
|
||||
# Check if log dirs exist
|
||||
dirs_exist()
|
||||
{
|
||||
if [ ! -d "$EGALERT_LOG_DIR" ]
|
||||
then
|
||||
# Log dir doesn't exist. We make it now.
|
||||
mkdir $EGALERT_LOG_DIR
|
||||
else
|
||||
if [ ! -d "$EGALERT_STATUS_DIR" ]
|
||||
then
|
||||
mkdir $EGALERT_STATUS_DIR
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Creates egalert log file
|
||||
egalert_log()
|
||||
{
|
||||
# Create log file if it doesn't exist yet
|
||||
if [ ! -f "$EGALERT_DAILY_LOG" ]
|
||||
then
|
||||
touch $EGALERT_DAILY_LOG
|
||||
fi
|
||||
|
||||
echo "$TIMESTAMP_FULL $@" >> $EGALERT_DAILY_LOG
|
||||
}
|
||||
|
||||
# Sends email. Content of email is in first parameter of this function
|
||||
send_email()
|
||||
{
|
||||
$MAIL_CMD -s "$MAIL_SUBJECT" -c "$MAIL_CC" -b "$MAIL_BCC" "$MAIL_TO" < $MAIL_CONTENT
|
||||
rm $MAIL_CONTENT
|
||||
}
|
||||
|
||||
send_log()
|
||||
{
|
||||
egalert_log "INFO: sendlog"
|
||||
cat $EGALERT_DAILY_LOG > $MAIL_CONTENT
|
||||
MAIL_SUBJECT="$MAIL_SUBJECT: Infolog"
|
||||
send_email
|
||||
}
|
||||
|
||||
# EGAlert
|
||||
#--------
|
||||
dirs_exist
|
||||
|
||||
cd $EGALERT_BIN_DIR
|
||||
|
||||
case "$1" in
|
||||
# EG:script ran. Touch run file for selected script.
|
||||
run)
|
||||
egalert_log "INFO: run ($2)"
|
||||
touch $EGALERT_STATUS_DIR/$2
|
||||
echo "Started at: $TIMESTAMP_FULL" >> $EGALERT_STATUS_DIR/$2
|
||||
exit 0
|
||||
;;
|
||||
# EG:script ran with success. Create success status for selected script.
|
||||
success)
|
||||
egalert_log "INFO: success ($2)"
|
||||
if [ -f $EGALERT_STATUS_DIR/$2 ]
|
||||
then
|
||||
echo "Finished with success at: $TIMESTAMP_FULL" >> $EGALERT_STATUS_DIR/$2
|
||||
else
|
||||
egalert_log "EXCEPTION: Script $2 run successfully but status file hasn't been created!"
|
||||
echo "EXCEPTION: Script $2 run successfully but status file hasn't been created!" > $MAIL_CONTENT
|
||||
MAIL_SUBJECT="$MAIL_SUBJECT: Exception!"
|
||||
send_email
|
||||
fi
|
||||
exit 0
|
||||
;;
|
||||
# Send daily log to desired users
|
||||
sendlog)
|
||||
send_log
|
||||
exit 0
|
||||
;;
|
||||
# Check status of all scripts they should've ran daily for current day
|
||||
checkdaily)
|
||||
egalert_log "INFO: checkdaily"
|
||||
for file in $(ls $EGALERT_STATUS_DIR | grep $DAYSTAMP)
|
||||
do
|
||||
if [ 1 != `cat $EGALERT_STATUS_DIR/$file | grep success | wc -l` ]
|
||||
then
|
||||
egalert_log "ERROR: Script $file failed!!!"
|
||||
echo "ERROR: Script $file failed!!!" > $MAIL_CONTENT
|
||||
MAIL_SUBJECT="$MAIL_SUBJECT: ERROR!!!"
|
||||
send_email
|
||||
fi
|
||||
done
|
||||
# Check itself. If log file exists (debugging switched on)
|
||||
# and if size of log is greater than zero. If so inform us.
|
||||
# If file is zero remove it.
|
||||
if [ -f $EGALERT_LOG_DIR/$DAYSTAMP.log ]
|
||||
then
|
||||
if [ -s $EGALERT_LOG_DIR/$DAYSTAMP.log ]
|
||||
then
|
||||
egalert_log "WARNING: EGAlert produced errors!!!"
|
||||
echo "WARNING: EGAlert produced errors!!!" > $MAIL_CONTENT
|
||||
MAIL_SUBJECT="$MAIL_SUBJECT: WARNING!"
|
||||
send_email
|
||||
else
|
||||
rm $EGALERT_LOG_DIR/$DAYSTAMP.log
|
||||
fi
|
||||
fi
|
||||
# Send daily log
|
||||
send_log
|
||||
exit 0
|
||||
;;
|
||||
esac
|
Loading…
Add table
Add a link
Reference in a new issue