#!/usr/bin/env bash # usage usage() { USAGE=$(cat < /dev/null || { echo "Requiring 'hostname' but it's not installed"; exit 1; } type mailx &> /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; } type df &> /dev/null || { echo "Requiring 'df' but it's not installed"; exit 1; } } # apply defaults DISK_SPACE_ALERT_MAIL_ADDRESS=""; DISK_SPACE_ALERT_THRESHOLD=93 DISK_SPACE_ALERT_MOUNTPOINTS=("/") source_config "$HOME/.disk_space_alert.conf" "/etc/disk_space_alert.conf" check_required # do not touch below HOSTNAME=$(hostname) for point in "${DISK_SPACE_ALERT_MOUNTPOINTS[@]}" do CURRENT=$(df "$point" | grep "$point" | awk '{ print $5}' | sed 's/%//g') CURRENT_SPACE=$(df "$point" | grep "$point" | awk '{ print $5}' | sed 's/%//g') CURRENT_INODES=$(df -i "$point" | grep "$point" | awk '{ print $5}' | sed 's/%//g') if [ "$CURRENT" -gt "$DISK_SPACE_ALERT_THRESHOLD" ] ; then mailx -s "[disk $HOSTNAME] $point" "$DISK_SPACE_ALERT_MAIL_ADDRESS" << EOF Your $point partition remaining free space is critically low. Used space: $CURRENT_SPACE%. Used inodes: $CURRENT_INODES%. EOF fi done