#!/bin/bash
#
# Checks if a disc usage specifed as $1 (defaulting to 90) in percant is exceeded 
# for / and eventual further partitions specified as $2....

export OKUSAGE="$1"
shift
if [ -z "$OKUSAGE" ] ; then
  OKUSAGE="90";
fi

export PARTLIST="/ $*"

export ERRORS=""
export INFOS=""

for PART in $PARTLIST ; do
  USAGE=$(df --output=pcent ${PART} |egrep "\s*[0-9]+%" |head -1 |tr -d " %")
  #echo "DEBUG: Usaage for ${PART} is ${USAGE}"

  if [ $USAGE -gt $OKUSAGE ] ; then 
    ERRORS=$( echo "${ERRORS}" |egrep -v "^$" ; echo "Disk usage TOO HIGH for ${PART} with ${USAGE}% > ${OKUSAGE}%, this might lead to FAILURE." )
  else
    INFOS=$( echo "${INFOS}" |egrep -v "^$" ; echo "Disk usage is OK for ${PART} with ${USAGE}% <= ${OKUSAGE}%")
  fi
done

if [ -z "${ERRORS}" ] ; then 
  echo "$(date +%Y-%m-%d\ %H:%M:%S): GOOD: Disk usages OK:"
  echo "${INFOS}"
  echo ""
  echo "Disc usages:"
  df -h ${PARTLIST}
  echo ""
  exit 0
fi

echo "$(date +%Y-%m-%d\ %H:%M:%S): ERROR: Disk usages are NOT OK:"
echo "${ERRORS}"
if [ -n "${INFOS}" ] ; then
  echo "${INFOS}" 
fi
echo ""
echo "Disc usages:"
df -h ${PARTLIST}
echo ""
exit 1

