This is just for my personnel reference, If you like to use it, just modify whatever is required.
I made this script to get a daily report for support staff so that they can monitor if backup’s are being performed properly & regularly. The backup scheduler make backup after every 2 hours. so there should be 12 backup files in /backup folder per day. This script just query them. I used somewhat some unusual method to acquire the files date, BUT there are other proper methods to get the same , dueto some urgency i just made whatever worked for me. Will update it if any changes will be required.
the Script !
mkdir /temp touch /temp/bkpreport.sh chmod +x /temp/bkpreport.sh nano /temp/bkpreport.sh
& paste following …
#!/bin/bash # This bash script is made to send report for files that were created in /backup folder by another scheduler # I made this to ensure that backups are done properly with automated reports including some other system level information. # 12-DEC-2017 # Syed Jahanzaib / aacable @ hotmail . com # https://aacable . wordpress . com #set -x #MYSQL Related Details HOSTNAME=`hostname` MYSQLID="root" MYSQLPASS="SQLPASS" SQL_ACCOUNTING_TABLE="radacct" GMAILID="YOURGMAIL@gmail.com" GMAILPASS="GMAILPASS" ADMINMAIL1="TO1@hotmail.com" COMPANY="ZAIB Ltd." #GMAILS MTP SMTP="64.233.184.108:587" # Script will search this folder for the files BKPFOLDER="/backup" MAILFILE="/tmp/bkpdir.log" #Set Human Friendly Date Format for yesterday & Display DATE=`date` TODAY=`date +"%d-%b-%Y"` YESTERDAY=`date +"%d-%b-%Y" -d '-1 days'` MAILSUB="$COMPANY RADIUS Backup Rerport for $YESTERDAY" # Count number of files LIST=`ls -lh $BKPFOLDER --time-style=+"%d-%b-%Y" |grep $YESTERDAY` TOTFILES=`ls -lh $BKPFOLDER --time-style=+"%d-%b-%Y" |grep $YESTERDAY |wc -l` # disk we want to monitor, make sure to change this # You need to adjust this , to match your drive, use df -h & modify this DISK="/dev/mapper/vg_myradius-lv_home" # Get DB size in MB MYSQLDBSIZE=`mysql -u$MYSQLID -p$MYSQLPASS --skip-column-names -e "SELECT table_schema "radius", sum(data_length + index_length)/1024/1024 FROM information_schema.TABLES WHERE table_schema='radius' GROUP BY table_schema;" | cut -f1 -d"." | sed 's/[^0-9]*//g'` DISKTOT=`df -h $DISK |awk '{print $2}'| sed -n 3p` DISKUSED=`df -h $DISK |awk '{print $3}'| sed -n 3p` DISKAVA=`df -h $DISK |awk '{print $4}'| sed -n 3p` DISKUSEPER=`df -h $DISK |awk '{print $5}'| sed -n 3p` MEMTOT=`free -m |awk '{print $2}'| sed -n 2p` MEMUSED=`free -m |awk '{print $3}'| sed -n 2p` MEMAVA=`free -m |awk '{print $4}'| sed -n 2p` MEMUSEDPER=`free -m | grep Mem | awk '{print $3/$2 * 100.0}'` MEMAVAPER=`free -m | grep Mem | awk '{print $4/$2 * 100.0}'` IPADD=`ifconfig | awk -v RS="\n\n" '{ for (i=1; i<=NF; i++) if ($i == "inet" && $(i+1) ~ /^addr:/) address = substr($(i+1), 6); if (address != "127.0.0.1") printf "%s\t%s\n", $1, address }'` SESSIONS=`mysql -u$MYSQLID -p$MYSQLPASS --skip-column-names -e "use radius; SELECT username FROM $SQL_ACCOUNTING_TABLE WHERE acctstoptime IS NULL;" |wc -l` FOOTER="This automated report is generated on $DATE Powered by $COMPANY Coding by Syed.Jahanzaib / aacable at hotmail dot com" echo "Daily report for $HOSTNAME System @ COMPANY. $TOTFILES backup sets were made with intervale of 2 hours on $YESTERDAY List of files that were backuped $YESTERDAY... $LIST OTHER DETAILS: JUST FYI, =============== NETWORK DETAILS: =============== Hostname = $HOSTNAME Network IP Details $IPADD ========================== RADIUS SERVER MYSQL REPORT: ========================== MYSQL 'RADIUS' DB SIZE = $MYSQLDBSIZE MB RADIUS Online Users = $SESSIONS Users / [at the time of this script running, generaly 00:00 Hours / Midnight] ==================== DIS / STORAGE REPORT: ==================== Total Disk Space = $DISKTOT Total Disk Space Used = $DISKUSED Total Disk Space Available = $DISKAVA Total Disk Space = $DISKUSEPER ============== MEMORY REPORT: ============== Total RAM = $MEMTOT MB Total RAM Used = $MEMUSED MB Total RAM Available = $MEMAVA MB Total RAM Used Percent = $MEMUSEDPER % Total RAM Available Percent = $MEMAVAPER % $FOOTER" >$MAILFILE #Display Results in terminal cat $MAILFILE # Send results via email to $ADMINMAIL1 sendemail -t $GMAILID -u "$MAILSUB" -o tls=yes -s $SMTP -t $ADMINMAIL1 -xu $GMAILID -xp $GMAILPASS -f $GMAILID -o message-file=$MAILFILE -o message-content-type=text
Sample Email !
Click to enlarge
Regard’s
Syed Jahanzaib