[Variable d'environnement]Pas de valeur pour $TERM (abandon)

Applications, problèmes de configuration réseau
Répondre
otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

[Variable d'environnement]Pas de valeur pour $TERM (abandon)

Message par otacon » dim. 27 avr. 2014, 21:01

Bonjour à tous,

j'ai monté un petit script pour pouvoir vérifier toutes les heures si une mise à jour est disponible :

Code : Tout sélectionner

#!/bin/bash
nombre=`yaourt -Qu | wc -l`
if $nombre > /dev/null 2>&1
then :
else notify-send -u critical "$nombre mises à jour disponibles"
fi
nommé notify, droits en 755. Quand je le lance en user, il fonctionne très bien.

Puis je fais un cron, pour qu'il s'applique toutes les heures

Code : Tout sélectionner

crontab -e
Je rentre dans l'éditeur (ici toutes les minutes à fin de test) :

Code : Tout sélectionner

*/1 * * * * ~/Documents/scripts/notify
Et il ne se passe rien.
Pour voir ce qu'il se passe :

Code : Tout sélectionner

[clement@arch ~]$ sudo systemctl status cronie
● cronie.service - Periodic Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/cronie.service; enabled)
   Active: active (running) since dim. 2014-04-27 09:30:48 CEST; 11h ago
 Main PID: 334 (crond)
   CGroup: /system.slice/cronie.service
           └─334 /usr/bin/crond -n

avril 27 20:51:01 arch CROND[17501]: pam_unix(crond:session): session closed for user root
avril 27 20:51:01 arch CROND[17502]: (clement) CMDOUT (tput: No value for $TERM and no -T specified)
avril 27 20:51:01 arch CROND[17502]: pam_unix(crond:session): session closed for user clement
avril 27 20:52:01 arch crond[17530]: pam_unix(crond:session): session opened for user root by...d=0)
avril 27 20:52:01 arch CROND[17532]: (root) CMD (/etc/cron.d/powersave)
avril 27 20:52:01 arch crond[17531]: pam_unix(crond:session): session opened for user clement...d=0)
avril 27 20:52:01 arch CROND[17533]: (clement) CMD (~/Documents/scripts/notify)
avril 27 20:52:01 arch CROND[17530]: pam_unix(crond:session): session closed for user root
avril 27 20:52:01 arch CROND[17531]: (clement) CMDOUT (tput: No value for $TERM and no -T specified)
avril 27 20:52:02 arch CROND[17531]: pam_unix(crond:session): session closed for user clement
Hint: Some lines were ellipsized, use -l to show in full.
J'ai donc un problème (dans mon script ?) de variable d'environnement TERM

Mon seul terminal installé est terminator.
ma définition actuelle de $TERM :

Code : Tout sélectionner

[clement@arch ~]$ /bin/bash -c 'echo $TERM'
xterm
Je fouine depuis un moment, mais je ne comprends pas ou agir.
Vous auriez une idée pour régler ce souci de variable d'environnement ?
Merci d'avance ! :chinois:
Dernière modification par otacon le lun. 28 avr. 2014, 12:38, modifié 1 fois.

otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par otacon » dim. 27 avr. 2014, 22:31

problème résolu pour $TERM par la modification du script:

Code : Tout sélectionner

#!/bin/bash
export TERM=xterm
nombre=`yaourt -Qu | wc -l`
if $nombre > /dev/null 2>&1
then :
else notify-send -u critical "$nombre mises à jour disponibles"
fi
mais la notification ne s'affiche toujours pas via cron.

Edit : pour l'affichage, il faut prévoir à minima (merci le fofo arch :) )

Code : Tout sélectionner

#!/bin/bash
export TERM=xterm
export DISPLAY=:0.0
export XAUTHORITY=/home/clement/.Xauthority
nombre=`yaourt -Qu | wc -l`
if $nombre > /dev/null 2>&1
then :
else notify-send -u critical "$nombre mises à jour disponibles"
fi
mais ça ne s'affiche toujours pas.

benjarobin
Maître du Kyudo
Messages : 15476
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par benjarobin » lun. 28 avr. 2014, 00:13

Bonsoir,
Pourquoi utiliser yaourt et non pacman ? Sinon voir du coté de package-query.
Pour la notification c'est tout à fait normale que cela ne fonctionne pas. L'utilisateur root n'a pas accès par défaut à Xorg.
Comment lances tu Xorg ? KDM, GDM, slim, startx, ... ?
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)

otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par otacon » lun. 28 avr. 2014, 10:11

Bonjour,
yaourt parce qu'il est utilisable en simple utilisateur.
je lance Xorg avec GDM.
mon crontab est utilisateur, le script appartient à l'utilisateur. J'ai du mal à cerner cron, malgré avoir lu les wikis d'arch, fedora, mandriva.

benjarobin
Maître du Kyudo
Messages : 15476
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par benjarobin » lun. 28 avr. 2014, 10:28

Tu n'as pas besoin d'être root pour faire pacman -Qu, pour faire pacman -Sy oui.
Si tu lances ton script avec ton utilisateur courant, désolé j'avais mal lu, il te suffit de rajouter les variables d'environnement qui vont bien.
Il te faut au moins définir : export DISPLAY=:0
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)

otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par otacon » lun. 28 avr. 2014, 10:56

Code : Tout sélectionner

#!/bin/bash
export TERM=xterm
export DISPLAY=:0
export XAUTHORITY=/home/clement/.ICEauthority
nombre=`yaourt -Qu | wc -l`
if $nombre > /dev/null 2>&1
then :
else notify-send -u critical "$nombre mises à jour disponibles"
fi
pas mieux.

benjarobin
Maître du Kyudo
Messages : 15476
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par benjarobin » lun. 28 avr. 2014, 11:41

XAUTHORITY est différent de ICEauthority.
Supprime la ligne du export XAUTHORITY
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)

otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par otacon » lun. 28 avr. 2014, 11:51

Merci benjarobin.
Non, pas mieux. Le cronie.service est clean, il ouvre, lance le script, ferme.
On pourrait exporter l'ensemble des variables d'environnement de l'user en une seule commande ? si ça a un interêt..

benjarobin
Maître du Kyudo
Messages : 15476
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par benjarobin » lun. 28 avr. 2014, 12:15

Comme je trouve déjà ton script assez moche, remplace le par :

Code : Tout sélectionner

#!/bin/bash

export TERM=xterm
export DISPLAY=:0

nb=$(package-query -Qu -f "%n" | wc -l)
if [[ $nb -gt 0 ]] ; then
    notify-send -u critical "$nb mises à jour disponibles"
else
    notify-send -u critical "Aucune mise à jour disponible"
fi
Je l'ai testé sous KDE et cela fonctionne sans aucun souci... Avec la ligne de cron :

Code : Tout sélectionner

*/1 * * * * /home/benjarobin/test.sh
J'ai utilisé un chemin absolu, je ne sais pas si cela influence, de plus :

Code : Tout sélectionner

$ ls -l /home/benjarobin/test.sh
-rwxr-xr-x 1 benjarobin benjarobin 179 28 avril 12:13 /home/benjarobin/test.sh
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)

otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par otacon » lun. 28 avr. 2014, 12:26

Ok, fait. Pas mieux.
je viens d'installer le package gnome-schedule, qui propose les options suivantes :
- comportement par défaut
- supprimer la sortie
- Application X
- Application X:supprimer la sortie
j'ai tenté avec les deux derniers. Pas mieux.
Je suis revenu au "comportement par défaut".

otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [Variable d'environnement] Pas de valeur pour $TERM

Message par otacon » lun. 28 avr. 2014, 12:37

Bon, ça marche chez toi.
j'abandonne pour le moment, je me rabat sur la ligne de conky :

Code : Tout sélectionner

${if_match ${execi 3601 yaourt -Qu | wc -l }==0}${color}A jour$else${color ff2300}Mise à jour disponible$endif
j'y reviendrai surement dans quelques temps, idée neuve, autre approche, connaissances nouvelles. Pour l'instant je ne cerne pas le truc.
merci beaucoup benjarobin :chinois:

coolgeek
archer
Messages : 100
Inscription : jeu. 24 juin 2010, 09:44

Re: [Variable d'environnement]Pas de valeur pour $TERM (aban

Message par coolgeek » mar. 29 avr. 2014, 09:04

une chose a savoir : cron, lorsqu'il lance un programme, ne charge pas de profile utilisateur (ou root ou meme celui global au systeme), ton souci viens surement de la.
Essaie de rajouter ces 2 lignes :

Code : Tout sélectionner

source /etc/profile
source /home/$USER/.bashrc
$USER est a remplacer par ton login
et le .bashrc est a remplacer par celui de ton shell

Répondre