Exécuter un script Python depuis du php

Résolu/Fermé
CorentinRoche Messages postés 269 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 1 décembre 2022 - 13 mai 2018 à 16:24
NHenry Messages postés 15032 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 janvier 2023 - 21 mai 2018 à 14:13
Bonjour,
J'ai un petit soucis sur le lancement de script python depuis une page WEB.

Je vous explique :

-J'ai une page web deux bouton ON - OFF

-et j'ai deux script led-on.py et led-off.py

-Quand je clique sur ON j'aimerais que sa lance le script led-on.py et pour OFF sa lance led-off.py

Voila comment j'ai procéder, la partie du script python ON - OFF fonctionne quand je le lance a la main "python led-on.py"

INDEX.PHP
<!doctype html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="stylesheet.css">
    </head>
    <body>
         
        <form action="script.php" method="post">
            <input type="submit" name="executer" value="ON" class="button" id="ON">
            <br/>
            <input type="submit" name="executer" value="OFF" class="button" id="OFF">
        </form>
         
    </body>
</html>


SCRIPT.PHP

<?php

if($_POST['executer'] == 'ON')
{
shell_exec("/usr/bin/python /var/www/html/sites/led/led-on.py");
}
else
{
shell_exec("/usr/bin/python /var/www/html/sites/led/led-off.py");
}
header('Location: index.php');

?>


Je pense que l'erreur viens du fichier script.php

les deux partie avec "shell_exec()"

Voila toutes les facon que j'ai essayer :

-shell_exec("/usr/bin/python /var/www/html/sites/led/led-on.py");

-shell_exec("python led-on.py");

-exec("python led-on.py");

-exec("python /var/www/html/sites/led/led-on.py");

Au niveau des droit sur les fichiers :


Si vous avez une idée ? :p

1 réponse

CorentinRoche Messages postés 269 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 1 décembre 2022 39
13 mai 2018 à 17:49
Bon j'ai trouver une solution
C'est que www-data n'as pas les droit ducoup dans le fichier /etc/sudoer
rajouter cette ligne :

0
NHenry Messages postés 15032 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 janvier 2023 333
13 mai 2018 à 18:19
GROS WARNING, La fonction cernée est très dangereuse et peut permettre en cas de faille à l'execution indue de commandes.
De plus passer www-data en sudoers permet à un attaquant malveillant de passer en root très facilement sur ta machine.

Un compromis serait plutôt d'avoir un script résident (qui tourne en permanence) ou appellé par une cron régulièrement qui lit un fichier texte que le PHP aurait écrit (pas de commande, mais juste les instructions genre "Allumer LED").
0
CorentinRoche Messages postés 269 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 1 décembre 2022 39
14 mai 2018 à 09:39
C'est vrai que passer www-data en sudoers c'est pas le mieux mais je voie pas comment faire d'autre ......
Puis c'est un petit serveur local privé.
mais si vous avez une autre solution :p

Ça serait de crée un script qui tourne en permanence sur le serveur qui vérifie le contenue d'un fichier texte, et si le contenue est égale a "Allumer LED" on start le led-on.py et si le contenue est égale a "StopLED" on start le led-off.py
0
NHenry Messages postés 15032 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 janvier 2023 333
21 mai 2018 à 14:13
En gros, c'est l'idée que je suggère.
0