#1 Le 07/09/2012, à 14:14
- Detah-Pixel
pas d'affichage des fenêtres avec cron
Bonjour,
Je me permet de vous écrire car, dans le but d'un script d'affichage du niveau de la batterie j'utilise le code suivant:
1 #!/bin/bash
2 complet=`info.sh|grep 'Battery'|cut -d , -f 3|sed 's/ //g'|sed 's/remaining//g'`
3 hour=`info.sh|grep 'Battery'|cut -d , -f 3|sed 's/ //g'|sed 's/remaining//g'|cut -d : -f 1`
4 min=`info.sh|grep 'Battery'|cut -d , -f 3|sed 's/ //g'|sed 's/remaining//g'|cut -d : -f 2`
5 date >> /media/DATA/Données\ de\ Laurent/Documents/crontab/sensors/battery.log
6 echo $complet >> /media/DATA/Données\ de\ Laurent/Documents/crontab/sensors/battery.log
7 echo "" >> /media/DATA/Données\ de\ Laurent/Documents/crontab/sensors/battery.log
8 if [ $hour = 00 ] && [ $min -le 50 ]
9 then
10 zenity --info --title="Niveau de batterie" --text="Il reste moins de 50 minutes de batterie"
11 fi
12 if [ $hour = 00 ] && [ $min = 20 ]
13 then
14 zenity --info --title="Niveau de batterie" --text="Il reste 20 minutes d e batterie"
15 fi
16
17 if [ $hour = 00 ] && [ $min = 30 ]
18 then
19 zenity --info --title="Niveau de batterie" --text="Il reste 30 minutes d e batterie"
20 fi
21 if [ $hour = 01 ] && [ $min = 00 ]
22 then
23 zenity --info --title="Niveau de batterie" --text="Il reste une heure de batterie"
24 fi
25
26 if [ $hour = 02 ] && [ $min = 00 ]
27 then
28 zenity --info --title="Niveau de batterie" --text="Il reste 2 heures de batterie"
29 fi
30
31 if [ $hour = 03 ] && [ $min = 00 ]
"battery.sh" [lecture-seule] 39L, 1432C 1,1 Haut
La commande info.sh est une code home made qui me donne quelques informations dont la batterie et j'extrais ces informations avec sed, cut, ...
dans les lignes 2,3 et 4. Ce script exécuté dans la console fonctionne parfaitement et m'ouvre en effet (quand la nécessité s'en fait ressentir) des fenêtres l'indiquant le temps restant de batterie.
Le problème est que ce script, je demande au crontab de l'exécuter tout les quarts d'heure et, dans ce cas là, aucune fenêtre ne s'ouvre.
Hors, le sript s'effectue car je le vois dans le fichier de log que je remplis en ligne 6 et 7.
Pouvez-vous m'aider ?
Death-Pixel
edit modo : titre plus explicite
Dernière modification par nesthib (Le 08/09/2012, à 06:28)
Death-Pixel
Never let your motivation burnout.
Hors ligne
#2 Le 07/09/2012, à 14:23
- Kooothor
Re : pas d'affichage des fenêtres avec cron
Plop,
C'est pas une histoire de droits ?
Ton crontab, c'est ton user ou root qui le lance ?
Hors ligne
#3 Le 07/09/2012, à 14:29
- Detah-Pixel
Re : pas d'affichage des fenêtres avec cron
J'avoue que je ne sais pas cela. Je pense que c'est mon user. Cependant, ce script ne demande aucun droit particulier et est placé dans /bin ainsi que info.sh. Tout le monde peut donc l'exécuter non ?
Death-Pixel
Never let your motivation burnout.
Hors ligne
#4 Le 07/09/2012, à 15:31
- Kooothor
Re : pas d'affichage des fenêtres avec cron
Hors ligne
#5 Le 07/09/2012, à 15:36
- Detah-Pixel
Re : pas d'affichage des fenêtres avec cron
Au risque de paraître ennuyant, que veux tu dire par non ?
Je sais et j'ai la preuve que la commande s'exécute.
Le problème est que je ne vois aucune fenêtre alors qu'il devrait y en avoir une. Pourquoi ?
Je ne comprends pas le rapport avec les droits d'administration...
Merci beaucoup.
Death-Pixel
Never let your motivation burnout.
Hors ligne
#6 Le 07/09/2012, à 15:47
- Kooothor
Re : pas d'affichage des fenêtres avec cron
En gros, tout ce que est en dehors de /home/user ne peut pas être écrit par un utilisateur, seul root peut modifier les fichiers dans /bin (vraiment grosso merdo hein).
Après, selon les permissions, un utilisateur peut lire/exécuter un truc dans /bin (et heureusement).
Essaie de lancer ton cron avec root :
$ sudo su
# crontab -e
N'oublie pas de placer ton script dans un répertoire accessible uniquement par root (car c'est une faille de sécurité de runner par root un script modifiable par non-root). Pas forcément grave sur un desktop mais autant prendre de bonnes habitudes
Aussi, évite de mettre tes programmes/script dans /bin. Je sais que GNU/Linux n'est pas aussi propre qu'un BSD mais c'est pas une raison pour continuer à le bordeliser ^^
Tu peux mettre ça dans ~/.bin ou /opt.
Perso j'ai un ~/.scripts...
Hors ligne
#7 Le 08/09/2012, à 06:27
- nesthib
Re : pas d'affichage des fenêtres avec cron
J'ai l'impression d'avoir répondu plusieurs fois à ce problème cette semaine… et je viens de vérifier, la réponse est dans la doc de cron.
Il faut simplement préciser où se fait l'affichage en ajoutant DISPLAY=:0.0 dans le crontab.
NB. une petite remarque, tu utilises beaucoup de pipes pour pas grand chose… il y a moyen d'optimiser ton code au lieu de balancer une sortie de sed dans un autre sed… par ailleurs, puisque la source d'origine est un script maison, ne peux-tu pas faire en sorte d'afficher des données propres dès le début ? Et en une seule fois ? parce que là tu le lances 3 fois pour rien.
Ensuite tu fais un test pour 50/30/20 minutes alors qu'il te suffit d'afficher la valeur $min. Dernière chose, évite la syntaxe `…` qui est obsolète en bash, utilise à la place $(…).
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#8 Le 11/09/2012, à 15:37
- Detah-Pixel
Re : pas d'affichage des fenêtres avec cron
Merci beaucoup Nesthib
Death-Pixel
Never let your motivation burnout.
Hors ligne