Problème de lancement de script bash via php

Bonjour à tous

alors voila l’explication de mon problème :

J’ai un script écrit en bash qui fonctionne. Il se connecte sur une autre machine via ssh et lance divers commandes pour l’installation d’une appli.

Pour cela j’utilise la connexion par clés.

Mon objectif est d’exécuter ce script via une interface web. Pour cela l’utilisateur saisie l’IP de la machine où il désire installer l’appli et le script est modifié afin de se connecter à la bonne machine.

La modification du script fonctionne.
L’exécution du script avec l’utilisateur root fonctionne.

Mais le lancement du script via l’interface web ne fonctionne pas :cry:

J’ai pourtant ajouté la clé publique sur la machine distante pour l’utilisateur www-data qui d’après mon apache2.conf est le bon user.
De plus le lancement du script via la ligne de commande en tant que www-data fonctionne également.

Dans mon fichier php je lance le script de la manière suivante :
exec("/tmp/script.sh 1>>log.txt 2>>log.txt");

Est ce que quelqu’un aurait une idée ? d’où peut venir le problème ?

Merci d’avance :wink:

Y-a quoi dans ton script comme commande ? N’oublie pas que www-data a des droits minimum pour des questions de sécurité.

Voila mon script

#!/bin/sh
SERVERS_LIST="192.168.0.201"
for current_server in $SERVERS_LIST; do
scp autoinstaller root@$current_server:
ssh -f root@$current_server "./autoinstaller "
done

Le truc est que si je me connecte avec l’utilisateur www-data et que je lance le script, il n’y a aucun problème …

mais si je le fait via la page php —> rien ne se passe

C’est bien ça, il fait quoi ce script au juste ?
Je comprend pas ce que tu veux dire avec la méthode par la page php … c’est bien www-data qui accède à la page php non ?
Donc dans les deux cas c’est lui qui lance le script ?
Fais voir ton appel au script dans la page php, les droits de la page php, les droits du script aussi … merci.

Ah j’oubliais … tu n’utilises pas de suEXEC et autre suPHP hein ?

pour faire ce que tu veux faire , faut que tu utilise la commande php de PHP .

aptitude install php5-clie

ensuite créer un fichier script.php dans /var/www/ton_site
voici son contenue :

<? exec("/ton_script.sh"); ?>

maintenant en conssole si tu tape :

php /var/www/ton_site/script.php ton script devrai ce lancer .

pareille en http à distance , si tu tape 127.0.0.1/ton_site/script.php
tu lancera ton script à distance .

voilla la solution , moi je l’utilise pour eteindre le pc ou lancer une sauvegarde depuis mon travail .