#!/bin/bash
#
# Variables
domain=mydomain.local
host=$HOSTNAME
smtphost=mymailhost.mydomain.local
mailto=myemail@mydomain.com
mailto2=mysecondemail@mydomain.com
#
cat /dev/null >> /root/oldfailure.out
cat /dev/null >> /root/oldlocks.out
cat /dev/null >> /root/olderror.out
cat /dev/null >> /root/oldsuccess.out
cat /dev/null >> /root/oldbackup.out
cat /dev/null >> /root/oldintegrity.out
cat /dev/null >> /root/oldrestorepoint.out
cat /dev/null >> /root/oldincomplete.out
cat /dev/null >> /root/temperror.out
cat /dev/null >> /root/temperror2.out
cat /dev/null >> /root/temperror3.out
cat /dev/null >> /root/temperror4.out
cat /dev/null >> /root/tempincomplete.out
#
fail=0
lock=0
err=0
succ=0
incomp=0
#
# First get the errors and make it a bit more readable
strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i "error" | sed -e 's/\[[^]]*\]//g' > /root/temperror.out
#
# Now filter out the failures and make it human readable
cat /root/temperror.out | grep "Fail" > /root/tempfailure.out
cat /root/tempfailure.out | awk -F"$" '{print $2 $3 $6}' > /root/newfailure.out
#
# Diff out the failures so only the other errors remain
diff /root/temperror.out /root/tempfailure.out > /root/temperror2.out
#
# See if there are any locks (lock=no backup!)
cat temperror2.out | grep "locked" > /root/templock.out
cat /root/templock.out | awk -F"$" '{print $2 $3 $4 $5}' | sed 's/?//g;s/"//g' > /root/newlocks.out
#
# And diff out the locks
diff /root/temperror2.out /root/templock.out > /root/temperror3.out
#
# Lines with the general notice "execution error" we can ignore, so diff them out
cat temperror3.out | grep -A1 "execution errors" > /root/tempexecerr.out
diff /root/temperror3.out /root/tempexecerr.out > /root/temperror4.out
#
# Now we get the remaining errors separated from the rubbish
cat temperror4.out | grep "< < <" > /root/temperror5.out
cat /root/temperror5.out | awk -F"$" '{print $2 $3 $4}' | awk -F"," '{print $1 $2}' | sed 's/?//g;s/"//g' > /root/newerror.out
#
#creating incomplete list
strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i -B2 "incomplete" | sed -e 's/\[[^]]*\]//g' | awk -F"$" '{print $1 $2 $3 $4}' | awk -F"." '{print $1}' > /root/newincomplete.out
#
#creating backuplist
strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i -A3 "back up" | awk -F"$" '{print $2 $3}' | sed -e '/\[[^]][0-9]*\]$/ {N; s/\[[^]][0-9]*\]\n//}' | sed -e 's/\[[^]]*\]//g' | sed 's/ "//' > /root/newbackup.out
diff /root/oldbackup.out /root/newbackup.out | sed '1d; s/^.\{2\}//g' > /root/diffbackup.out
mv /root/newbackup.out /root/oldbackup.out -f
succ=$(cat /root/diffbackup.out | grep -c "Completed")
#creating integrity check list
strings -e l /var/vmware/datarecovery/operations_log.utx | egrep -A1 '.*Starting.*integrity.*check.*' | awk -F"$" '{print $2 $3 $4 $5}' | sed -e 's/\[[^]]*\]//g' > /root/newintegrity.out
diff /root/oldintegrity.out /root/newintegrity.out | sed '1d; s/^.\{2\}//g' > /root/diffintegrity.out
mv /root/newintegrity.out /root/oldintegrity.out
#creating restore point overview
strings -e l /var/vmware/datarecovery/operations_log.utx | grep -i "restore point" | sed -e 's/\[[^]]*\]//g' | sed 's/?//g;s/"//g' | awk -F"$" '{print $2 $3 $4 $5}' > /root/newrestorepoint.out
diff /root/oldrestorepoint.out /root/newrestorepoint.out | sed '1d; s/^.\{2\}//g' > /root/diffrestorepoint.out
mv /root/newrestorepoint.out /root/oldrestorepoint.out -f
##
# Compare new list of all failures to old list of all failures
if ! diff /root/oldfailure.out /root/newfailure.out
then
diff /root/oldfailure.out /root/newfailure.out | sed '1d; s/^.\{2\}//g' > /root/difffail.out
fail=$(cat /root/difffail.out | grep -c "Fail")
mv /root/newfailure.out /root/oldfailure.out -f
fi
#
# Compare new list of all locks to old list of all locks
if ! diff /root/oldlocks.out /root/newlocks.out
then
diff /root/oldlocks.out /root/newlocks.out | sed '1d; s/^.\{2\}//g; s/" //' > /root/difflocks.out
lock=$(cat /root/difflocks.out | grep -c "lock")
mv /root/newlocks.out /root/oldlocks.out -f
fi
#
# Compare new list of all errors to old list of all errors
if ! diff /root/olderror.out /root/newerror.out
then
diff /root/olderror.out /root/newerror.out | sed '1d; s/^.\{2\}//g; s/" //' > /root/differr.out
err=$(cat /root/differr.out | grep -c "error")
mv /root/newerror.out /root/olderror.out -f
fi
#
#Compare new list of all incompletes to old list of all incompletes
#
if ! diff /root/oldincomplete.out /root/newincomplete.out
then
diff /root/oldincomplete.out /root/newincomplete.out | sed '1d; s/^.\{2\}//g' > /root/diffincomplete.out
incomp=$(cat /root/diffincomplete.out | grep -c "incomplete")
mv /root/newincomplete.out /root/oldincomplete.out -f
fi
#if ! diff /root/oldsuccess.out /root/newsuccess.out
#then
#diff /root/oldsuccess.out /root/newsuccess.out | grep ">" > /root/diffsuccess.out
#succ=$(cat /root/diffsuccess.out | grep -c "success")
#mv /root/newsuccess.out /root/oldsuccess.out -f
#fi
# Send email with any errors found
(
sleep 1
echo "HELO $host.$domain"
sleep 1
echo "mail from: vdrreport@$domain"
sleep 1
echo "rcpt to:$mailto"
sleep 1
echo "rcpt to:$mailto2"
sleep 1
echo "data"
sleep 1
echo "subject: $host VDR-Report $(date +"%Y.%m.%d %H:%M") Jobs OK: $succ, Failures: $fail, Incomplete jobs: $incomp, Locks: $lock, Errors: $err"
sleep 1
echo "from: "vdrreport@$domain
sleep 1
echo "to:$mailto"
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "$host $(date +"%Y.%m.%d %H:%M") Jobs OK: $succ, Failures: $fail, Incomplete jobs: $incomp, Locks: $lock, Errors: $err #####"
echo ""
sleep 1
echo "#################################################################################################"
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "##### $fail Failures #####"
sleep 1
echo " "
sleep 1
if [ -f /root/difffail.out ]
then
cat /root/difffail.out
else
echo No list for failures found!
fi
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "##### $incomp Incomplete jobs #####"
sleep 1
echo " "
sleep 1
if [ -f /root/diffincomplete.out ]
then
cat /root/diffincomplete.out
else
echo No list for incomplete jobs found!
fi
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "##### $lock Locks #####"
sleep 1
echo " "
sleep 1
if [ -f /root/difflocks.out ]
then
cat /root/difflocks.out
else
echo No list for locks found!
fi
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "##### $err Errors #####"
sleep 1
echo " "
sleep 1
if [ -f /root/differr.out ]
then
cat /root/differr.out
else
echo No list for errors found!
fi
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "##### Backup overview ($succ successfull jobs) #####"
sleep 1
echo " "
sleep 1
if [ -f /root/diffbackup.out ]
then
cat /root/diffbackup.out
else
echo No list for backups found!
fi
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "##### Integrity check overview #####"
sleep 1
echo " "
sleep 1
if [ -f /root/diffintegrity.out ]
then
cat /root/diffintegrity.out
else
echo No list for integrity checks found!
fi
sleep 1
echo ""
sleep 1
echo ""
sleep 1
echo "####################################################################"
sleep 1
echo "##### Restore point overview #####"
sleep 1
echo " "
sleep 1
if [ -f /root/diffrestorepoint.out ]
then
cat /root/diffrestorepoint.out
else
echo No list for restore point found!
fi
sleep 1
echo " "
sleep 1
echo "."
sleep 1
echo "QUIT"
) | telnet $smtphost.$domain 25
# Cleaning up
rm -f /root/diff*.out
rm -f /root/temp*.out
exit 0
VDR1 2012.07.05 10:00 Jobs OK: 5, Failures: 0, Incomplete jobs: 0, Locks: 0, Errors: 0 #####
#################################################################################################
####################################################################
##### 0 Failures #####
No list for failures found!
####################################################################
##### 0 Incomplete jobs #####
No list for incomplete jobs found!
####################################################################
##### 0 Locks #####
No list for locks found!
####################################################################
##### 0 Errors #####
No list for errors found!
####################################################################
##### Backup overview (5 successfull jobs) #####
7/4/2012 6:05:49 PM: Performing incremental back up of disk server10/server10-flat.vmdk
7/4/2012 6:17:22 PM: Performing incremental back up of disk server10/server10_1-flat.vmdk
7/4/2012 6:17:32 PM: Performing incremental back up of disk server10/server10_2-flat.vmdk
7/4/2012 6:29:38 PM: Execution completed successfully
7/4/2012 6:29:38 PM: Completed: 9 files, 90.1 GB
7/4/2012 6:05:18 PM: Performing incremental back up of disk server008-new/server008-new-flat.vmdk
7/4/2012 6:35:59 PM: Execution completed successfully
7/4/2012 6:35:59 PM: Completed: 5 files, 50.1 GB
7/4/2012 6:05:19 PM: Performing full back up of disk server020.mydomain.local/server020.mydomain.local-flat.vmdk
7/4/2012 6:52:41 PM: Execution completed successfully
7/4/2012 6:52:41 PM: Completed: 5 files, 12.7 GB
7/4/2012 6:02:45 PM: Performing incremental back up of disk vserver150/vserver150-000002-flat.vmdk
7/4/2012 6:32:57 PM: Performing incremental back up of disk vserver150/vserver150_1-000002-flat.vmdk
7/4/2012 7:07:29 PM: Execution completed successfully
7/4/2012 7:07:29 PM: Completed: 7 files, 250.1 GB
7/4/2012 6:05:19 PM: Performing incremental back up of disk VCS-w2k8R2-x64/VCS-w2k8R2-x64-flat.vmdk
7/4/2012 7:24:10 PM: Performing incremental back up of disk VCS-w2k8R2-x64/VCS-w2k8R2-x64_1-flat.vmdk
7/4/2012 7:26:22 PM: Execution completed successfully
7/4/2012 7:26:22 PM: Completed: 7 files, 100.1 GB
####################################################################
##### Integrity check overview #####
####################################################################
##### Restore point overview #####
7/5/2012 7:00:24 AM: Deleted restore point 7/3/2012 6:00:04.000 PM for virtual machine vserver150
Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.
Comments (0)