Exécuter un script Python depuis du php [Résolu/Fermé]

Signaler
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
-
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
-
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

Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
21
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 :

Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
258
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").
Messages postés
245
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
24 août 2020
21
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
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
258
En gros, c'est l'idée que je suggère.