#!/bin/sh # Par Julien MOREAU ( jmoreau@bigfoot.com ) nbps=1 # Nombre de paramètres souhaités delay=1 # Délai entre 2 teste (en minutes) mailto="" # Destinataire par défaut cmd=`basename $0` # Nom de la commande # Son à jouer : son="/public/ICQ/Sounds/Online.au" if test ! -r "$son" ; then son=`locate BuddyArrive.au` ; fi usage="Usage: $cmd [-h]\n" # Message d'aide usage=$usage"\n\tAffiche ce message d'aide.\n" usage=$usage"\nUsage: $cmd [-m ] [...] &\n" usage=$usage"\n\tAttends une ou plusieurs personnes en vérifiant si elles sont loguées\n\ttoutes les $delay minute(s) puis, à l'arrivée de chacune :" usage=$usage"\n\t - joue le son \"$son\"," usage=$usage"\n\t - et affiche ou envoie par mail un message adapté." usage=$usage"\n\n\tC'est l'option -m qui permet d'envoyer un mail" usage=$usage"\n\tplutôt que d'afficher un message en open-window." if test `uname` != "HP-UX" ; then e="-e" ; fi if [ "$#" -ge 2 -a "$1" = "-m" ] ; then mailto="$2" ; shift 2 ; fi if [ "$#" -lt $nbps -o "$1" = "-h" ] ; then # Vérifie le nb de paramètres echo $e $usage 1>&2 ; exit 2 # Affichage aide puis arrêt fi search="-e wm -e enlightenment -e sh -e sawfish -e box -e gnome -e kde" cmpt=0 ; liste="" ; listn="" ; tmp=".$cmd.tmp" > $tmp # On vide le fichier temporaire s'il existait for login in $* ; do ligne=`grep -- ^$login: /etc/passwd` if [ $? -ne 0 ] ; then echo $e "Login \"$login\" inexistant sur ce serveur." >> $tmp else nom=`echo $ligne|cut -d: -f5|cut -d, -f1` ps -u $login|grep -qi $search if [ $? -eq 0 ] ; then echo "$nom est déjà logué(e) !" >> $tmp else liste="$liste $login" ; cmpt=`expr $cmpt + 1` listn=$listn"\n\t$cmpt) $nom" >> $tmp fi fi done echo $e "\nListe des personnes à attendre :\n$listn" >> $tmp nbl=`expr 5 + $#` hauteur=`expr $nbl \* 21` cat $tmp #xmessage -geometry 390x$hauteur -file $tmp -timeout 5 rm -f $tmp delay=`expr $delay \* 60` # Transforme le délai en secondes while test -n "$liste" ; do sleep $delay newliste="" for login in $liste ; do ps -u $login|grep -q $search if [ $? -eq 0 ] ; then if test -n "$son" ; then ### Alerte sonore ### auplay "$son" || play "$son" 2> /dev/null fi ligne=`grep ^$login: /etc/passwd` nom=`echo $ligne|cut -d: -f5|cut -d, -f1` ### Alerte visuelle ### msg="$nom vient de se loguer !" if test -z "$mailto" ; then xmessage -center "$msg" || echo $e "\n$msg" else echo $msg | mail -s "$msg" "$mailto" fi else newliste="$newliste $login" fi done liste="$newliste" done exit 0 # Sortie sans erreur