#!/bin/sh

# diskhogs - Outil d'analyse des quotas disque pour Unix.
#   Suppose que tous les identifiants utilisateur sont >= UID 100.
#   Envoie un courrier lectronique  chaque utilisateur qui abuse
#   et fait un rapport de cela  l'cran.

MAXDISKUSAGE=20 
violators="/tmp/diskhogs0.$$"

trap "/bin/rm -f $violators" 0

for name in $(cut -d: -f1,3 /etc/passwd | awk -F: '$2 > 99 { print $1 }')
do
  echo -n "$name "
  # Vous devrez peut-tre modifier la liste de rpertoires suivante pour
  # mieux reflter la situation sur votre disque. Changement le plus
  # probable: remplacer /Users par /home 
  find / /usr /var /Users -user $name -xdev -type f -ls | \
      awk '{ sum += $7 } END { print sum / (1024*1024) }'

done | awk "\$2 > $MAXDISKUSAGE { print \$0 }" > $violators

if [ ! -s $violators ] ; then
  echo "Aucun utilisateur ne dpasse le quota disque de ${MAXDISKUSAGE} Mo"
  exit 0 
fi

while read account usage ; do

  cat << EOF | fmt | mail -s "Avertissement: $account dpasse le quota" $account
Vous occupez ${usage}Mo d'espace disque, mais n'avez droit qu'
${MAXDISKUSAGE}Mo. Cela signifie que vous devez soit effacer certains
fichiers, soit compacter des fichiers (voyez pour cela gzip et
bzip2, programmes de compactage puissants et faciles  utiliser),
soit nous prsenter une demande argumente d'augmentation d'espace
disque. 

Merci pour votre comprhension.

Dave Taylor @ x554 
EOF

  echo "Le compte $account occupe $usage Mo d'espace disque. Utilisateur averti." 

done < $violators 

exit 0
