Back from my archives, I thought to share this simple and decent script to monitor file systems.
#!/bin/sh
#set -x
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Author: Alex Lima
# Client: XXXXXXXXX.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
##
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Shell script to monitor or watch the disk space
# It will send an email to $ADMIN_EMAIL, if the (free available) percentage of space is >= 85%.
# -------------------------------------------------------------------------
# Set admin email so that you can get email.
ADMIN_EMAIL="alex.lima@xxxxxx.com,Jos.vanLammeren@xxxxx.com"
#ADMIN_EMAIL="alex.lima@xxxxxx.com"
# set alert level 85% is default
THRESHOLD=85
# Exclude list of unwanted monitoring, if several partions then use "|" to separate the partitions.
# An example: EXCLUDE_LIST="/dev/hdd1|/dev/hdc5"
EXCLUDE_LIST="/oracle|/var|/vol"
TIMESTAMP=`date +"%d-%m-%Y_%H-%M-%S"`
APP_HOME="/home/gg_user/APPS/MONITOR"
APP_TEMP=$APP_HOME/TEMP
APP_LOG=$APP_HOME/LOG
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#
#### Function to send email alert
send_email() {
echo "Running out of space \"$FILESYSTEM $USED%\" on server \"$HOSTNAME\", `date`" | \
mailx -s "Alert: Almost out of disk space $USED% on $HOSTNAME" $ADMIN_EMAIL
#mailx -s "Alert: Almost out of disk space $USED% on $HOSTNAME" $ADMIN_EMAIL < ${EMAIL_BODY_UNIQUE}
#add delete
}
#### Function to Format the BODY Email
body_email() {
EMAIL_BODY_UNIQUE="$APP_TEMP/email_body_`echo $FILESYSTEM | sed 's/\/gg\///'`_$TIMESTAMP.tmp"; export EMAIL_BODY_UNIQUE
echo "Running out of space \"$FILESYSTEM $USED%\" on server \"$HOSTNAME\", `date`" > ${EMAIL_BODY_UNIQUE}
echo "" >> ${EMAIL_BODY_UNIQUE}
du -k $FILESYSTEM >> ${EMAIL_BODY_UNIQUE}
}
#### Function to check disk usage on Linux and AIX
main_prog_linux() {
df -Pk | grep '/gg' | sed 's/%//' | while read a b c d USED FILESYSTEM;
do
#echo $FILESYSTEM $USED;
if [ $USED -ge $THRESHOLD ] ; then
send_email
fi
done
}
#### Function to check disk usage on SunOS
main_prog_sun() {
df -k | cat | grep '/gg/' | sed 's/%//' | while read a b c d USED FILESYSTEM;
do
#echo $FILESYSTEM $USED;
if [ $USED -ge $THRESHOLD ] ; then
#body_email
send_email
fi
done
}
case `uname` in
Linux) HOSTNAME=`hostname -a`
main_prog_linux
;;
SunOS) HOSTNAME=`hostname`
main_prog_sun
;;
AIX) HOSTNAME=`hostname`
main_prog_linux
;;
esac