Bonsoir,
je viens de mettre au point un script à partir d'un exercice que je trouve dans le livre "Unix shell programming". nJ'en suis au chapitre 9.
Sincèrement, je n'arrive pas à assimiler la commande getopts avec notamment les rôles de " erropt" OPTARG et OPTIND.
Si quelqu'un peut me donner un coup de main surtout au niveau pédagogique.
Me dire où sont mes erruers et surtout pourquoi.
voici le script:
#! /bin/sh
# nom du fichier: delogged.sh
# #####valeurs des options
mailopt=FALSE
remopt=FALSE
logopt=FALSE
interval=600
# ####processus des commandes #####
while getopts nfmt: option
do
case $option in
m) mailopt=TRUE;;
t) interval=600;;
f) remopt=TRUE;;
n) logopt=$OPTARG;;
\?) echo " usage [-m] [-t n] [-f] [ -n] $user "
echo " -m means mail -f means files removed -n if logged user -t n periodic time"
exit 1 ;;
esac
done
################# On doit spécifier un nom d'utlisateur#### # Make sure a user name was specified
if [ "$OPTIND" -gt "$#" ]; then
echo "Missing user name!"
exit 2
fi
shifcount=$((OPTIND - 1))
shift $shifcount
user=$1
####### alerter quand il se deconnecte###############
until ! who | grep -v "^$user" > /dev/null
do
sleep 600
done
#### file removed ############### fichier supprimés################
file=$2
if [ ! -e $file ]; then
echo " the file is removed"
else
echo "not removed"
fi
###################### le signaler si oui il se delogge##############
if [ $logopt = FALSE ]; then
echo " he delogged"
elif
if [ $remopt = FALSE ]; then
echo " the file is removed"
else runner=$(who am i | cut -c1-8)
echo "$user has delogged " | mail $runner
fi
exit 2
# fin du script
#####################################################################
#BUT DU SCRIPT
Le script est censé m'envoyer un mail quand un utilisateur se déconnecte me donne la réponse si oui ou non un fichier a été supprimé et tourner toutes les 10 mn ( 600) secondes.
Je compte vraiment sur cette aide car ç a me bloque dans ma progression.
Merci d'avance.