return to PRS Technologies website
check_unix_free_percent1_hp.sh
|
#!/usr/bin/ksh
################################################################################
#
# Module: check_unix_free_percent1_hp.sh
#
# Description: Check Unix free disk percent info for HP/UX
#
# Author: Peter R. Schmidt
#
# Argument 1 = Warning Limit (percent free) a number between 1 and 100
# Argument 2 = Emergency Limit (percent free) a number between 1 and 100
# Argument X = -i [list of filesystems to include]
# -e [list of filesystems to exclude]
#
# IMPORTANT - The limits that you specify are the minimum PERCENT FREE. For example,
# check_unix_free_percent1_hp 25 10
# means: warn me FREE SPACE falls BELOW 25% and
# declare an emergency if FREE SPACE falls BELOW 10%
#
# Change Log
#
# Date Person Description
#
# 03/07/2001 Peter Schmidt Start program
#
################################################################################
if [ $# -lt 2 ]
then
echo "Usage: check_unix_free_percent1_hp.sh [WARNING LIMIT (percent free)] [EMERGENCY LIMIT (percent free) ] -i [List of filesystems to include] -e [List of filesystems to exclude]"
echo "Note: include and exclude lists are optional."
exit 1
fi
WARNING_LIMIT=$1
EMERGENCY_LIMIT=$2
################################################################################
EXCLUDE_LIST1=""
INCLUDE_LIST1=""
OPTION_EXCLUDE=false
OPTION_INCLUDE=false
CNT1=0
CNT2=0
INEX_MODE=0
shift
shift
while [ ${1}x != x ]
do
case $1 in
-i|-I) INEX_MODE=1
OPTION_INCLUDE=true
shift
continue;;
-e|-E) INEX_MODE=2
OPTION_EXCLUDE=true
shift
continue;;
*) ;;
esac
case $INEX_MODE in
1) CNT1=`expr $CNT1 + 1`
INCLUDE_LIST1[$CNT1]=$1;;
2) CNT2=`expr $CNT2 + 1`
EXCLUDE_LIST1[$CNT2]=$1;;
esac
shift
done
################################################################################
TMPFILE1=check_unix_free_percent_1.$$.tmp
rm -f $TMPFILE1
###############################################################################
UNIT=K
UNITDESC=Kbytes
PERCENT_TYPE=Free
###############################################################################
bdf -l | grep -v "Filesystem kbytes used avail %used Mounted on" > $TMPFILE1
###############################################################################
while read DEVICE ALLOCATED USED AVAIL PERCENT_USED MOUNTPOINT
do
#----------------------------------------------------------------------
# EXCLUDES
#----------------------------------------------------------------------
if [ $OPTION_EXCLUDE = true ]; then
FLAG_EXCLUDE=false
x=1
while [ $x -le $CNT2 ]
do
##echo "Debug: Check $x of $CNT2 for ${EXCLUDE_LIST1[$x]} and $MOUNTPOINT"
if [ ${MOUNTPOINT} = ${EXCLUDE_LIST1[$x]} ]; then
FLAG_EXCLUDE=true
break
fi
let x=$x+1
done
if [ $FLAG_EXCLUDE = true ]; then
continue
fi
fi
#----------------------------------------------------------------------
# INCLUDES
#----------------------------------------------------------------------
if [ $OPTION_INCLUDE = true ]; then
FLAG_INCLUDE=false
x=1
while [ $x -le $CNT1 ]
do
##echo "Debug: Check $x of $CNT1 for ${INCLUDE_LIST1[$x]} and $MOUNTPOINT"
if [ ${MOUNTPOINT} = ${INCLUDE_LIST1[$x]} ]; then
FLAG_INCLUDE=true
break
fi
let x=$x+1
done
if [ $FLAG_INCLUDE = false ]; then
continue
fi
fi
#----------------------------------------------------------------------
PERCENT_USED=`echo $PERCENT_USED | tr -d "%"` # get rid of percent sign
PERCENT_FREE=`expr 100 \- $PERCENT_USED` # get percent free
# echo "Mount: $MOUNTPOINT"
# echo "PERCENT_USED = $PERCENT_USED"
# echo "PERCENT_FREE = $PERCENT_FREE"
if [ $PERCENT_FREE -lt $EMERGENCY_LIMIT ]
then
echo "******* EMERGENCY ******* (Unix filesystem: ${MOUNTPOINT})"
echo "Free space on Unix filesystem: ${MOUNTPOINT} has dropped below the emergency limit of ${EMERGENCY_LIMIT}% free!"
echo "Available free space is down to ${AVAIL} of ${ALLOCATED} ${UNITDESC} (${PERCENT_USED}% used, ${PERCENT_FREE}% free)"
echo
else
if [ $PERCENT_FREE -lt $WARNING_LIMIT ]
then
echo "******* WARNING ******* (Unix filesystem: ${MOUNTPOINT})"
echo "Free space on Unix filesystem: ${MOUNTPOINT} has dropped below the warning limit of ${WARNING_LIMIT}% free!"
echo "Available free space is down to ${AVAIL} of ${ALLOCATED} ${UNITDESC} (${PERCENT_USED}% used, ${PERCENT_FREE}% free)"
echo
fi
fi
done < $TMPFILE1
rm -f $TMPFILE1
################################################################################