#!/bin/sh
# suspenduser - Suspend un compte utilisateur jusqu' nouvel ordre.

homedir="/home"   # rpertoire personnel des utilisateurs
secs=10           # dlai d'attente avant dconnexion de l'utilisateur

if [ -z $1 ] ; then 
  echo "Syntaxe: $0 compte" >&2 ; 
  exit 1 
elif [ "$(whoami)" != "root" ] ; then
  echo "Erreur. Il faut tre root pour excuter cette commande." >&2; exit 1 
fi 

echo "Veuillez fournir un nouveau mot de passe pour le compte $1."
passwd $1

# Il est temps de voir si cet utilisateur est connect, et le cas
# chant, de l'jecter du systme
if who|grep "$1" > /dev/null ; then

  tty="$(who | grep $1 | tail -1 | awk '{print $2}')" 

  cat << "EOF" > /dev/$tty 
************************************************************* 
MESSAGE URGENT DE L'ADMINISTRATEUR:

Ce compte va tre suspendu  la demande de la direction.
Vous serez dconnect dans $secs secondes. Veuillez quitter
immdiatement tout processus en cours d'excution et vous 
dconnecter.

Si vous avez des questions, contactez votre suprieur ou Jean 
Dupont, responsable du service informatique.
************************************************************* 
EOF

  echo "(averti $1, j'attends maintenant $secs secondes)"

  sleep $secs

  jobs=$(ps -u $1 | cut -d\  -f1)

  kill -s HUP $jobs                   # on envoie le signal de fin aux
                                      #   processus de cet utilisateur
  sleep 1                             # on leur laisse une seconde... 
  kill -s KILL $jobs > /dev/null 2>1  # et on tue tout ce qui reste

  echo "$1 tait connect. Il vient d'tre dconnect." 
fi

# Fermons enfin ce rpertoire personnel aux yeux indiscrets
chmod 000 $homedir/$1 

echo "Le compte $1 a t suspendu." 
exit 0
