#!/bin/bash
# Purpose: Monitor Linux disk space and send an email alert to $ADMIN
#ALERT=90 # alert level
ALERT=90
ADMIN="neshura@neshweb.net" # dev/sysadmin email ID
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read -r output;
do
  echo "$output"
  usep=$(echo "$output" | awk '{ print $1}' | cut -d'%' -f1 )
  partition=$(echo "$output" | awk '{ print $2 }' )
  lockname=$(echo $partition | tr / _);
  if [ $usep -ge $ALERT ]; then
   if test -f "./$lockname.lock";
    then echo "Found lockfile - Cancel mail";
    else
   touch "./$lockname.lock"
   {
      echo "TO: $ADMIN"
      echo "Subject: Alert: Disk spage usage at $usep%/$ALERT%"
      echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)"
   } |
   ssmtp -F"FROMNAME" "$ADMIN"
   fi
  else
   if test -f "./$lockname.lock"; then rm "./$lockname.lock"
   fi
 fi
done