#26 Le 01/12/2012, à 15:43
- ljere
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
je t'ai rajouté une commande pour voir si le prog est bien lancé
#!/bin/bash
##################################################################################
## Autheur: ljere ##
## Script pour éteindre les pc en effectuant une sauvegarde de sécurité ##
##################################################################################
echo "script lancé" > ~/test
#sauvegarde des documents
while :; do
#lancement de la commande avec grsync
# demander si il faut bien éteindre
ans=$(zenity --question --timeout=60 --title "Alert" --text "le pc va s'éteindre dans 60 sec");
if [ $? = 5 ]; then
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
exit 1
fi
echo 'utilisateur lance la boucle'
sleep 3540
done
mais il me semble que sur ce coup la on a pas beaucoup réfléchi
je m'explique le principe de ma commande était de lancer l'extinction sans être root mais si tu la places dans bin ou /usr/bin/ il faut activer le crontab de root soit
sudo crontab -e
ou alors tu remets ton script dans ton dossier personnel et la le crontab user sera l'activer sans problème en lui indiquant juste dans quel dossier se trouve le script tu as le choix des méthodes
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#27 Le 02/12/2012, à 03:39
- samos412
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
j'aurais vraiment bien voulu noté [Résolu] dans le sujet, mais c'est toujours pas le cas.
j'ai bien un fichier tes qui s'est crée avec script lancé dedans.
ce ne serait pas crontab qui merdois?
Hors ligne
#28 Le 02/12/2012, à 09:58
- ljere
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
quand tu lances ton script dans le terminal ça fonctionne?
tu as bien lancé crontab en root ou tu l'as déplacé dans ton home?
as tu modifié le script?
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#29 Le 02/12/2012, à 11:44
- loubrix
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
une idée à tester: remplace dans le script
#!/bin/bash
par
#!/bin/sh
PS: je m'explique; dans /etc/crontab, on a ça:
SHELL=/bin/sh
et bien que dans /etc/shells on aie ça:
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
je me demandais si ça pouvait jouer...
Asus X50VL - Ubuntu 12.04 AMD64
HP G62 - Ubuntu 12.10 AMD64
Fujitsu-Siemens Amilo EL - Lubuntu 12.04 i686
Manjaro, une rolling pour débutants
Hors ligne
#30 Le 03/12/2012, à 18:25
- sam412
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
alors le script fonctionne lorsque je le lance dans un terminal.
j'ai modifier le cron en root,
j'ai modifié le script, en ajoutant
echo "script lancé" > ~/test
j'ai bien un fichier test dans mon home, avec script lancé écrit dedans.
donc le script fonctionne mais ne lance pas la commande.....
ne faut il pas etre en root pour lancer :
ans=$(zenity --question --timeout=60 --title "Alert" --text "le pc va s'éteindre dans 60 sec");
c'est juste une idée
merci
Hors ligne
#31 Le 04/12/2012, à 09:53
- elendil
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
Salut,
Si le script fonctionne dans un terminal sans root c'est qu'il est bon !
Par contre cron ne sait pas lancé d'application graphique si on ne lui précise pas vers quel display le faire....
Il faut semble-t-il ajouter
export DISPLAY=:0 &&
dans ton crontab ce qui devrait donner
45 11 * * * export DISPLAY=:0 && /usr/bin/eteindre
source : http://ubuntuforums.org/showthread.php?t=185993
Il faut par contre que /usr/bin/eteindre soit exécutable par tout le monde :
chmod 755 /usr/bin/eteindre
Elendil
Dernière modification par elendil (Le 04/12/2012, à 09:55)
Hors ligne
#32 Le 05/12/2012, à 09:19
- sam412
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
yep
ayé ca marche, enfin.
un petit résumé s'impose
j'ai utiliser le script de ljere que j'ai un peu modifié:
#!/bin/bash
##################################################################################
## Autheur: ljere ##
## Script pour éteindre les pc en effectuant une sauvegarde de sécurité ##
##################################################################################
#sauvegarde des documents
while :; do
#lancement de la commande avec grsync
# demander si il faut bien éteindre
ans=$(zenity --question --timeout=60 --title "Extinction auto du poste" --text "le pc va s'éteindre brutalement dans 60 sec" --ok-label "eteindre maintenant" --cancel-label "j'attends la prochaine alerte, dans 1h");
if [ $? = 5 ]; then
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
exit 1
fi
echo 'utilisateur lance la boucle'
sleep 3600
done
je n'ai pas integré la sauvegarde, je trouve plus pertinant de l'integrer a la fermeture du poste, quelque soit la maniere de l'eteindre.
j'ai nommé ce script eteindre
j'ai copié ce fichier dans /usr/bin et je l'ai rendu executable par tous
chmod 755 /usr/bin/eteindre
puis j'ai édité le cron
crontab -e
et j'ai ajouté une ligne
00 18 * * * export DISPLAY=:0.0 && /usr/bin/eteindre
ainsi, le sript se lance tous les jours a 18h, et averti l'utilisateur que le poste va s'eteindre brutalement 60 secondes plus tard (sans qu'aucune demande d'enregistrement des documents ouverts soit demandé. d'ou le brutalement).
Soit il n'y a pas de reponse de sa part, et l'ordi s'eteint, soit il a le choix d'attendre 1h de plus pour que l'extinction se fasse plus tard.
et voila ca marche, il y avait une erreur de syntaxe dans ce que tu avais noté elendil
il manquait un .0 apres le DISPLAY=:0
Merci a tous.tes de m'avoir aidé, en espérant que ce script serve aussi a d'autres pour éviter que des ordinateur restent allumer inutilement toute la nuit par négligence de certains.nes
Sam412
Hors ligne
#33 Le 05/12/2012, à 10:52
- elendil
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
Salut,
Bien vu pour le 0.0 après DISPLAY
Une possibilité d'amélioration est de remplacer le sleep par la commande at avec quelque chose du genre :
echo "/usr/bin/eteindre" | at now + 1 hours
C'est une subtilité mais sleep est une commande qui attend et va rester active pendant 3600 seconde . . .
Au contraire at prévoit de relancer le script dans une heure et ne fais rien pendant ce temps là.
Je ne pense pas qu'il y ait de réel problème avec sleep mais mettons que l'utilisateur demande à laisser le PC alumer une heure de plus et qu'il éteigne correctement le PC 20 minutes plus tard. Le script eteindre sera en cours d'exécution (à cause de la commande sleep).
Au contraire avec at rien ne tourne et si le PC est éteint une heure plus tard il ne va pas l'allumer et ne se lancera tout simplement pas.
J'espère ne pas dire de bêtise.
Bonne journée,
Elendil
Hors ligne
#34 Le 05/12/2012, à 11:19
- ljere
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
je ne vois pas de réel inconvénient avec sleep quand on va éteindre le pc 20 mn plus tard comme tu le suggères le système va killer tous les process actif dont sleep
c'est vrai que l'on peux essayer avec at mais je suis sceptique sur l’intérêt
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#35 Le 05/12/2012, à 18:41
- elendil
Re : [Resolu] automatisation de l'extinction du PC avec confirm et decompte
Je me posais un peu la question à "voix haute" et c'est vrai que la consommation CPU de sleep est assez insignifiante.
Moi j'utilise at dans mes scripts dans ce cas de figure là surtout car j'ai plus d'une heure à attendre et plein de script qui fonctionnent comme ça.
Et je ne voulais pas encombrer le système avec des dizaines de sleep qui attendent longtemps.
C'est vrai qu'ici ça ne doit pas changer grand chose.
Hors ligne