File: //usr/local/bin/quota_check.sh
#!/bin/bash
ADMIN_EMAIL="tomas.berzinas@go.kauko.lt"
FS="/" # Filesystem where quotas apply
REPQUOTA=$(command -v repquota)
AWK=$(command -v awk)
MSMTP=$(command -v msmtp)
HOSTNAME=$(hostname)
# Get list of users who are actually over quota
# Column 2 in repquota output shows flags like '--', '+-', '++'
# '+' means grace expired or hard limit exceeded
OVER_QUOTA=$($REPQUOTA -u "$FS" | $AWK '$1 ~ /^[a-z0-9]/ && $2 ~ /\+/')
if [ -n "$OVER_QUOTA" ]; then
mail_body=$(cat <<EOF
From: web@kauko.lt
To: $ADMIN_EMAIL
Subject: Disk Quota Exceeded Alert on $HOSTNAME
Report generated on: $(date)
Filesystem: $FS
The following users have exceeded their disk quotas:
$OVER_QUOTA
EOF
)
echo "$mail_body" | $MSMTP "$ADMIN_EMAIL"
fi