[Tuto] Exécuter/Tester un script (.sh) en tant que www-data en ligne de commande

Il a dû vous arriver de vouloir exécuter le script.sh que vous êtes en train de débuguer directement connecté en SSH sur l’OS qui supporte Jeedom.
Le problème, c’est qu’il n’est pas possible de se connecter en tant que www-data, et c’est bien avec cet utilisateur que Jeedom exécute vos scripts.

Et bien il suffit d’affecter temporairement un shell à l’utilisateur www-data pour pouvoir tester votre script.

Lancez une session SSH sur la machine qui héberge Jeedom, puis connectez-vous en root (en fonction de votre distribution, la commande peut différer) :

su root (Debian 9)

ou

sudo su - (Ubuntu)

sudo su (Raspbian)

su (Synology)

par exemple. Entrez le mot de passe root.
Puis tapez la commande :

su -l www-data -s /bin/bash

et ensuite, rendez-vous dans le répertoire des scripts :

cd /var/www/html/plugins/script/data

puis :

./monscript.sh

et voilà, vous voyez maintenant le retour de votre script et pouvez le débuguer !

7 « J'aime »

Très bon ça ! Merci pour l’astuce !

1 « J'aime »

Normalement si tu passe par l’éditeur du plugin-script a la sortie il met des droits en 775 a la sauvegarde …

Oui, c’est sans doute exact, et tous les utilisateurs ont donc le droit d’exécuter ce script, mais si tu es connecté en tant que « olive » ou « root » sur ta box jeedom, tu ne pourras pas tester ton script dans les conditions réelles dans lesquelles Jeedom l’exécute, c’est à dire en tant qu’utilisateur www-data.
Cette astuce permet de faire ça et donc de voir en direct comment il se comporte plutôt que de passer par l’interface script de Jeedom.

1 « J'aime »

Salut,

Je sort du placard ce sujet.

Merci pour les informations concernant l’usage de www-data

Je suis confronté à une « problématique » j’ai un script .sh qui fais appels a des command line d’une application (twinkle) mon script s’éxécute bien en pi ou root pas moyen en www-data
Après analyse la raison est xhost:

www-data@raspberrypi:~/html/plugins/script/data$ ./call.sh
qt.qpa.screen: QXcbConnection: Could not connect to display
Could not connect to any X display

Après quelques recherches: xhost - Allowing computers access

J’ai bien donner les droits xhost suivant:
root@raspberrypi:/var/www/html/plugins/script/data# xhost
access control disabled, clients can connect from any host
LOCAL:
SI:localuser:www-data
SI:localuser:root
SI:localuser:pi

Si l’un d’entre vous à une idée :slight_smile:

Merci

pour info sur vm synology
su
toutes les autres méthodes ne marche pas !
image