Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 08/10/2013, à 12:28

Crestey

Re : [Résolu] Impossible d'afficher un message avec cron

Merci infiniment tiramiseb.
Le mieux étant l'ennemi du bien, je crois que je vais en rester là.
A+


Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne

#52 Le 09/10/2013, à 20:45

Crestey

Re : [Résolu] Impossible d'afficher un message avec cron

Juste pour dire que le script pour lequel j'avais besoin d'afficher un message depuis root par cron est ci-dessous.
Je l'ai testé et mis en place. Tout semble bien marcher même si le code est sans doute perfectible.
Merci à vous tous smile et surtout tiramiseb.

P.S.1 Le script a été tiré de . (il n'affichait pas de message et nécessitait quelques retouche pour tourner sous Ubuntu).

Le script permet de faire une limitation horaire sur des sessions (2h/jour le W.E. et 1h/jour en semaine).
5 minutes avant, l'utilisateur est prévenu toute les minutes par un message popup (d'où ce fil) qu'il va être déconnecté dans x minutes.
Puis il est déconnecté, et ne peut se reconnecter que le lendemain.

#! /bin/bash

# Script max_temps
# Ptyxs - février 2008

# export DISPLAY=:0.0
# export XAUTHORITY=/home/crestey/.Xauthority

# liste des utilisateurs à quotas, l'admin devra tenir cette liste à jour
USERS_RESTREINTS="sophie thomas"

# début du chemin du fichier-compteur
PREFIXE="/root/max_temps"


# durée maximum de connexion autorisée le week-end d'une part en semaine de l'autre
if [  $(date "+%a") = 'dim.'  -o $(date "+%a") = 'sam.' ] ; then
LIMITE=120
else
LIMITE=60
fi


for login in $USERS_RESTREINTS ; do
	FICHIER="${PREFIXE}_${login}_$(date "+%d%m%Y")"	
# nettoyage : on supprime tout fichier-compteur de login d'une date antérieure
	for fich in  ${PREFIXE}_${login}_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ; do
			if [  "$fich" != "$FICHIER" ]; then
         	rm -f "$fich"
         fi
	done
	# si le fichier-compteur du jour n'existe pas on le crée et on l'initialise à zéro et on réactive le compte
	if [ ! -e "$FICHIER" ] ; then
		echo 0000 > $FICHIER
		usermod --unlock "$login"
	fi
done

for login in $USERS_RESTREINTS ; do
	# le fichier-compteur du jour qui totalisera la durée d'utilisation effective de l'ordi
	# pour chaque utilisateur (login) pour la journée en cours (date)
	
	FICHIER="${PREFIXE}_${login}_$(date "+%d%m%Y")"
	FICHIERtmp="${PREFIXE}_tmp"

	for en_ligne in $(users) ; do
	# si login est un utilisateur connecté sur cette machine
		if [ "$login" == "$en_ligne" ]; then
			cat $FICHIER |  gawk '{ $1 +=  1 } END { print $1 }' > $FICHIERtmp
			cp $FICHIERtmp $FICHIER
	# message d'alerte
			if [ "$(cat $FICHIER)" -ge "$[LIMITE-5]" ]; then
				DISPLAY0=$(who | grep tty7 |  cut -f1 -d' ')
				DISPLAY1=$(who | grep tty8 |  cut -f1 -d' ')
				DISPLAY2=$(who | grep tty9 |  cut -f1 -d' ')
				DISPLAY3=$(who | grep tty10 |  cut -f1 -d' ')
				if [ -n "$DISPLAY0" ];	then
					if [ "$DISPLAY0" == "$login" ]; then 
						DISPLAY=:0 sudo -u $DISPLAY0 /usr/bin/notify-send "$DISPLAY0 : déconnexion dans $[LIMITE-$(cat $FICHIER)]mn"
					fi
				fi
				if [ -n "$DISPLAY1" ];	then
					if [ "$DISPLAY1" == "$login" ]; then 
						DISPLAY=:1 sudo -u $DISPLAY1 /usr/bin/notify-send "$DISPLAY1 : déconnexion dans $[LIMITE-$(cat $FICHIER)]mn"
					fi
				fi
				if [ -n "$DISPLAY2" ];	then
					if [ "$DISPLAY2" == "$login" ]; then 
						DISPLAY=:2 sudo -u $DISPLAY2 /usr/bin/notify-send "$DISPLAY2 : déconnexion dans $[LIMITE-$(cat $FICHIER)]mn"
					fi
				fi
				if [ -n "$DISPLAY3" ];	then
					if [ "$DISPLAY3" == "$login" ]; then 
						DISPLAY=:3 sudo -u $DISPLAY3 /usr/bin/notify-send "$DISPLAY3 : déconnexion dans $[LIMITE-$(cat $FICHIER)]mn"
					fi
				fi
		  	fi

		fi

	# si la limite est atteinte on arrête la machine				
		if [ "$(cat $FICHIER)" -ge "$LIMITE" ] ; then
		# skill -KILL -u "$login"
			killall -9 -u "$login" -r
			usermod --lock "$login"
		# /usr/bin/halt
		fi
   done
done

exit 0

Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.

Hors ligne