1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| #! /bin/sh
# Passage en mode démon
if [ "$MON_PID" != "$PPID" ] ; then
export MON_PID=$$
MON_LISTING=$(cat $0)
cd /
setsid /bin/bash -c "$MON_LISTING" "$0" "$@" 0<&- 1>&- 2>&- &
logger -t $(basename $0) "Le PID du demon est $!"
echo "Le PID du démon est $!" >& 2
exit 0
fi
FIFO_SRV=~/noms_ident.fifo
function gestionnaire_signaux
{
rm -f $FIFO_SRV
exit 0;
}
trap gestionnaire_signaux EXIT QUIT INT HUP
if [ -e $FIFO_SRV ] ; then
echo "FIN" > $FIFO_SRV &
exit 0;
fi
mkfifo -m 0622 $FIFO_SRV
if [ ! -p $FIFO_SRV ] ; then
echo "Impossible de créer la file FIFO $FIFO_SRV"
exit 1
fi
FIN=""
while [ ! $FIN ] ; do
read IDENT FIFO_CLT < $FIFO_SRV
TROUVE=""
exec < /etc/passwd
ANCIEN_IFS="$IFS"
IFS=":"
while read ident passe uid gid nom reste ; do
if [ "$IDENT" == "$ident" ] ; then
TROUVE="Oui"
break
fi
done
IFS=$ANCIEN_IFS
if [ "$IDENT" == "FIN" ] ; then
FIN="Oui"
TROUVE="Oui"
nom="Fin du serveur"
fi
if [ $TROUVE ] ; then
echo "$nom" > $FIFO_CLT
else
echo "Non trouvé" > $FIFO_CLT
fi
done |
Partager