Page 1 sur 1

Pb de PATH

Publié : 22 janv. 2021, 17:53
par e111111
Bonjour,

j'ai depuis pas mal de temps un script BASH qui me sert à la reconnaissance de BEACONS pour la gestion de présence,
dernièrement j'ai rajouté la gestion du niveau de batterie suite à une pile qui a lâché brutalement et m'a posé pb.

Ça fonctionne très bien si je lance le script à la main, mais dès que c'est lancé en automatique Domoticz ne récupère plus la valeur de la batterie.

J'ai redirigé les logs sur un fichier, et là j'ai ce message : "sudo: gatttool: command not found"

Le HCITOOL passe parfaitement, mais pas le GATTTOOL

J'ai beau avoir tenté plein de trucs sur le PATH ... rien à faire, la seule solution qui fonctionne, mais qui ne me satisfait pas, est de rajouter le chemin de GATTTOOL avant la commande dans le script, là plus de pb.

Je précise que je travaille sur un Syno, ça peut avoir son importance.

Si quelqu'un a une idée pour m'aider,

merci d'avance

Re: Pb de PATH

Publié : 22 janv. 2021, 18:25
par Chrominator
Sur ce genre de question, c'est utile de voir le script.

En aveugle donc, je propose une solution qui fonctionne bien sous Linux : mettre le chemin complet dans le script, ce qui permet de s'affranchir du PATH de l'utilisateur :

Code : Tout sélectionner

/usr/sbin/<nom du pgm>
par exemple.
Utilisateur qui est root sous Linux au passage, à vérifier sous Syno.
C'est donc le PATH de root qui doit être examiné.

Re: Pb de PATH

Publié : 22 janv. 2021, 19:59
par e111111
Merci Chrominator,

oui, c'est ce que j'ai fait, j'ai mis le chemin complet dans le script, ça marche mais ça ne me plait pas ;)

Par contre j'ai pas tout compris à la partie sur le path du root, il y a plusieurs path ? un par utilisateur ?

Du coup je suis paumé, je ne sais pas lequel j'ai mis à jour : /etc/profile.

Re: Pb de PATH

Publié : 22 janv. 2021, 20:45
par Chrominator
Le PATH peut être défini en plusieurs endroits.
Dans le fichier de configuration /etc/environment qui a une portée système, dans le script /etc/profile qui vaut pour tous les utilisateurs, dans un des scripts de /etc/profile.d qui sera exécuté juste après pour tous les utilisateurs et avant le ~/.profile d'un user en particulier.

Sous Ubuntu sur mon raspberry pi le user par défaut puis root ;

Code : Tout sélectionner

pi@phoenix:~$ echo $PATH
/home/pi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
pi@phoenix:~$ sudo bash
[sudo] password for pi:
root@phoenix:/home/pi# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
pi@phoenix:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
root@phoenix:/home/pi#
Donc le chemin absolu, même si c'est pas très beau, ça reste une valeur sure.
Pour assurer un portage facile vers d'autres systèmes, dès lors que le script est un peu touffu, on peut définir au début des variables qui seront utilisées pour appeler les pgm dans le script.

Exemple :

Code : Tout sélectionner

#!/bin/bash

CURL="/usr/bin/curl"
DD="/bin/dd"
TAR="/bin/tar"

Re: Pb de PATH

Publié : 22 janv. 2021, 21:41
par e111111
Bon, j'ai fait comme cela, j'ai déclaré la variable en début de script, ça fait plus propre...
J'ai pas trouvé dans le syno en dehors du /etc/profile.

Ce qui est quand même bizarre c'est que hcitool et gatttool sont dans le même répertoire,
encore un phénomène paranormal :D

Merci de m'avoir aidé.