Shashikant shah

Tuesday 12 April 2016

When receives an error 404 in logs then send a mail.

#!/bin/bash

##variable##
logs_file="/root/script/messages"
fine="/tmp/fine"
fine_old="/tmp/fine_old"
searching=$1
mailID="shashi.brain11@gmail.com"

if [[ $searching == '' ]];then
echo "usage ./scriptname Error_name"
exit 0
fi
##check log file exit ##
if [[ ! -f $logs_file ]];then
echo "Path not exit $logs_file"
exit 0
fi
### grep date & time ###
old_date_time=$(tail -n1 $logs_file | awk '{print $1,$2,$3}')
export old_date=$old_date_time

### new_date_time ###
grep_min=$(echo $old_date | awk '{print $3}')
min=$(echo $grep_min | awk -F ':' '{print $1,$2+1,$3}' | sed 's/ /:/g')

declare -a shashi=(`echo $old_date`);
new_date_time=$(echo ${shashi[0]} ${shashi[1]} $min)

## search old 1 min to new 1 min ##
search=$(sed -n "/$old_date_time/,/$new_date_time/p" $logs_file  2> /dev/null)

##set variable
declare LEVEL
LEVEL=$search

## match line
search_word=$(echo "$LEVEL" | grep -oh "\W*\w* $searching \w*\W*")
if [[ $? == 0 ]];then
        search_line=$(echo "$LEVEL" | grep -nr "$search_word")
        $(echo "$search_line" > $fine)
        $(touch $fine_old)
        diff=$(diff $fine $fine_old > /dev/null 2>&1)

if [ $? == 0 ];then
copy=$(cp -r $fine $fine_old)
else
#echo "$search_line"
echo "$search_line" | mail -s "Error Found in $logs_file " $mailID
copy=$(cp -r $fine $fine_old)
fi
fi
======================
Crontab set :-

*/1 * * * *  /bin/bash  script.sh 404

No comments:

Post a Comment