Re: Script python s'éxecute depuis raspbian mais pas depuis scripts lua domoticz - Gnotify
Publié : 22 août 2019, 09:09
Bon j'avance!
Vu que gnotify est lancé avec root et que lorsque je me connecte en putty avec l'utilisateur pi, je me suis dit que ça pouvait venir de là.
Je me suis donc connecté avec putty et j'ai fait un sudo su pour passer sous l'utilisateur root :
J'ai ensuite tenté un gnotify et j'ai obtenu une erreur qui correspond au fait que les deux variables d'environnement GNOTIFY_IPS et GNOTIFY_LANG ne sont pas initialisées :
Je les ai ajoutées avec ces commandes :
Et victoire, gnotify fonctionne! Je retente depuis domoticz... et toujours rien...
J'ai ensuite changé mon script lua pour afficher les variables d'environnement:
et j'ai obtenu :
Il manque les variables, comment puis-je les ajouter pour root? J'ai essayé avec :
mais cela ne fonctionne pas.
Je pense qu'une fois les variables ajoutées à root, ce sera bon.
Vu que gnotify est lancé avec root et que lorsque je me connecte en putty avec l'utilisateur pi, je me suis dit que ça pouvait venir de là.
Je me suis donc connecté avec putty et j'ai fait un sudo su pour passer sous l'utilisateur root :
Code : Tout sélectionner
pi@Domoticz:~ $ sudo su
root@Domoticz:/home/pi#
J'ai ensuite tenté un gnotify et j'ai obtenu une erreur qui correspond au fait que les deux variables d'environnement GNOTIFY_IPS et GNOTIFY_LANG ne sont pas initialisées :
Code : Tout sélectionner
root@Domoticz:/home/pi# gnotify test
Traceback (most recent call last):
File "/usr/local/bin/gnotify", line 10, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/dist-packages/gnotify/gnotify.py", line 20, in main
ips = os.getenv("GNOTIFY_IPS").split(',')
AttributeError: 'NoneType' object has no attribute 'split'
Je les ai ajoutées avec ces commandes :
Code : Tout sélectionner
root@Domoticz:/home/pi# export GNOTIFY_LANG=fr
root@Domoticz:/home/pi# export GNOTIFY_IPS=192.168.1.98
Et victoire, gnotify fonctionne! Je retente depuis domoticz... et toujours rien...
J'ai ensuite changé mon script lua pour afficher les variables d'environnement:
Code : Tout sélectionner
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
print('script lance par :'..os.capture('whoami'))
print(os.capture('set'))Code : Tout sélectionner
2019-08-22 09:03:00.466 Status: LUA: script lance par :root
2019-08-22 09:03:00.472 Status: LUA: IFS=' ' INVOCATION_ID='ea1f02db0eb442a0a6c528e7bafeab3a' JOURNAL_STREAM='8:11354' LANG='fr_FR.UTF-8' OPTIND='1' PATH='/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin' PPID='516' PS1='# ' PS2='> ' PS4='+ ' PWD='/home/pi/domoticz' Il manque les variables, comment puis-je les ajouter pour root? J'ai essayé avec :
Code : Tout sélectionner
echo -e "export GNOTIFY_IPS=[ip-addresses]\nexport GNOTIFY_LANG=[language]" | sudo tee --append /etc/profileJe pense qu'une fois les variables ajoutées à root, ce sera bon.