J'ai fais un mini script, il contient sûrement des erreurs car je ne suis pas un pro du bash, mais il est à tester :
#!/bin/bash
################################################
#Prend le numéro de l'utilisateur
login=$(id -u)
user=`grep :$login: /etc/passwd | cut -d ":" -f1`
################################################
#Vérifie que le script ne tourne pas déjà, si c'est le cas il ferme
script = $(sed -n "1,1p" /home/"$user"/.script)
if ["$script"=1]
then
exit
else
echo "1" > /home/"$user"/.script
fi
################################################
day=$(date +%d) #Récupère la date du jour
last_day=$(sed -n "1,1p" /home/"$user"/.last_day) #Récupère la date de la dernière session pour l'utilisateur
if ["$day" = "$lastday"]
then
shutdown +1 #Eteind le système après 1 minute si date = date de la dernière session
else
if ["$login" gt 1]
then
time_elapsed=$(sed -n "1,1p" /home/"$user"/.last_elapsed) #Récupère le nombre de minutes déjà utilisée pour la journée
while [ $time_elapsed -le 61 ]
do
sleep 1m
let $[ time_elapsed=$time_elapsed+1 ]
echo "$time_elapsed" > /home/"$user"/.last_elapsed
if [$time_elapsed gt 60]
then
echo "$day" > /home/"$user"/.last_day
echo "0" > /home/"$user"/.last_elapsed
echo "0" > /home/"$user"/.script
shutdown +1
fi
done
fi
fi
Explication
1) Il faut d'abord faire la liste avec le numéro de chaque utilisateur (Administration --> utilisateurs et groupes) et compléter le script
2) Pour chaque utilisateur, il faut créer les fichiers .last_day, .script et .last_elapsed dans son dossier personnel et ne donner les droits de modification uniquement à root
3) Il faut lancer le script en root au démarrage du système. Pour cela, une technique est d'utiliser fcron, une alternative à cron/anacron. Faire un :
sudo fcrontab -e
et ajouter la ligne
@ 1m /home/chemin du script
c'est-à-dire qu'une minute après le lancement de fcron (c'est-à-dire du démarrage du système), le script va être lancé toutes les minutes.
Donc voilà, même si ton enfant rallume le PC, il s'éteindra après une minute.
Par contre, cette technique a peut-être un gros souci si ton enfant met plus d'une minute à se connecter, d'où la ligne "if ["$login" gt 1]". En effet, je ne sais pas ce que donne id -u si personne n'est connecté (0 ?). Ou alors le script plante, je ne sais pas... Mais ca devrait passer quand même avec les conditions imposées.