Exécution de scripts Python via boutons page HTML

A la demande des premiers utilisateurs... Dites-nous qui vous êtes et... tout le reste ! Bienvenue sur les forums de la framboise

Modérateur : Francois

Répondre
Sodateru
Messages : 3
Enregistré le : lun. 31 mai 2021 16:21

Exécution de scripts Python via boutons page HTML

Message par Sodateru » lun. 31 mai 2021 16:43

Bonjour,

Je suis nouveau sur le forum, et je suis également débutant en HTML et PhP.
J'ai souvent lu sur ce forum mais je n'ai jamais rien demandé. Je sais donc que mon problème est un problème déjà existant puisqu'il y a déjà eu des articles sur ce sujet.
Après avoir étudié ces derniers je reste malgré tout bloqué, c'est pourquoi je viens vous demander de l'aide aujourd'hui.

Je travaille sur une porte de poulailler automatique avec ma Raspberry et j'utilise 2 scripts Python, un pour l'ouverture et un pour la fermeture.
J'ai fait une page HTML pour gérer cela avec 2 boutons (1 pour chaque action), cependant les scripts ne s'exécutent pas lorsque je clique sur les boutons.

J'ai essayé de simplement demandé de mettre à l'état haut des sorties de ma Raspberry (pour voir si le problème venait de mon programme Php ou bien de l'exécution des scripts), et dans ce cas cela fonctionne.

J'ai 3 fichiers pour gérer ma page HTML, 1 HTML (index.php), 1 JS (script.php) et 1 CSS (stylesheet.css).

Voici mon programme HTML :

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Porte poulailler</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>
<form action="script.php" method="post">
<input type="submit" name="ouvrir" value="Ouverture" class="button" id="Ouverture">
<br/>
<input type="submit" name="fermer" value="Fermeture" class="button" id="Fermeture">
</form>
</body>
</html>

puis mon programme PhP:

<?php
if($_POST['ouvrir'] == 'Ouverture')
{
system("python /home/pi/ouverture.py");
}
if($_POST['fermer'] == 'Fermeture')
{
system("python /home/pi/fermeture.py");
}
header('Location: index.php');
?>

Comme je l'ai précisé au début je suis débutant, je conçois alors que mes propos puissent ne pas être très clairs. J'espère néanmoins que quelqu'un pourra m'apporter un début de réponse.
Je vous remercie par avance.

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Exécution de scripts Python via boutons page HTML

Message par domi » lun. 31 mai 2021 18:24

Bonjour,

Dans ton script PHP, je pense qu'il te manque le chemin d'accès à python, ta commande :

Code : Tout sélectionner

system("python /home/pi/ouverture.py");
ne suffit pas.

Pour savoir où il se trouve, s'il est connu dans le path, tu peux exécuter la commande

Code : Tout sélectionner

whereis python
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

dyox
Raspinaute
Messages : 969
Enregistré le : dim. 28 déc. 2014 15:28
Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe

Re: Exécution de scripts Python via boutons page HTML

Message par dyox » lun. 31 mai 2021 21:50

Bonsoir,

Et si ce qu'a dit Domi ne suffit pas, peut-être changer les droits de ces fichiers en www-dada il me semble.

Sodateru
Messages : 3
Enregistré le : lun. 31 mai 2021 16:21

Re: Exécution de scripts Python via boutons page HTML

Message par Sodateru » mar. 1 juin 2021 09:04

Bonjour à vous,

Tout d'abord, je souhaite vous remercier pour vos réponses.

-domi, j'ai en effet essayé la commande avec le chemin d'accès à Python, cela me donne alors :

system("sudo /usr/bin/python3 /home/pi/ouverture.py")

mais cela ne fonctionne toujours pas (peut-être l'ai-je mal écrit ?).

-dyox, comment dois-je faire pour changer les droits de mes fichiers ?

Je vais chercher de mon côté en attendant vos réponses. Merci à vous.

dyox
Raspinaute
Messages : 969
Enregistré le : dim. 28 déc. 2014 15:28
Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe

Re: Exécution de scripts Python via boutons page HTML

Message par dyox » mar. 1 juin 2021 09:31


domos
Messages : 75
Enregistré le : lun. 9 mars 2015 19:17

Re: Exécution de scripts Python via boutons page HTML

Message par domos » mar. 1 juin 2021 11:03

Bonjour,

tu ne peux pas utiliser sudo, car l'utilisateur qui va exécuter ton script est "www-data" et il n'a pas et ne dois pas avoir de droits sudo.

De plus cette utilisateur "www-data", si il a bien accès au répertoire /home/pi, doit pouvoir lire tes scripts (droits 666).
chmod 666 /home/pi/ouverture.py ...

Sodateru
Messages : 3
Enregistré le : lun. 31 mai 2021 16:21

Re: Exécution de scripts Python via boutons page HTML

Message par Sodateru » mar. 1 juin 2021 11:56

Bonjour,

Que dois-je mettre à la place de sudo pour que "www-data" exécute mon script alors ?

Par rapport aux droits de lecture et d'écriture par tout le monde (666), j'avais personnellement donné tous les droits à mon fichier ouverture.py (777). Mais justement en faisant cela, je devrais pouvoir exécuter mon script même en utilisant l'utilisateur "www-data", non ? (or mon programme ne s'exécute toujours pas)

J'ai aussi essayé de mettre "sudo su" à la place de "sudo" (ce qui exécute la commande sous l'utilisateur "root" à la place de l'utilisateur "pi" il me semble ?) mais rien de plus (sachant que mon script.php est sous l'utilisateur "root" et que mes scripts python sont sous l'utilisateur "pi").

Merci.

dyox
Raspinaute
Messages : 969
Enregistré le : dim. 28 déc. 2014 15:28
Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe

Re: Exécution de scripts Python via boutons page HTML

Message par dyox » mar. 1 juin 2021 12:36

Qu'est-ce qui justifie l'utilisation de sudo pour le script.py ?

Comme dit précédemment, si cela ne fonctionne pas, mettre tous les fichiers du web sous www-data.
Pour plus de facilité, il a aussi visudo pour tester si c'est vraiment un problème de droits.

Rien dans les journaux comme erreurs ? (voir ma signature)

Il y a ce tuto qui peut être sympa : viewtopic.php?f=44&t=3033
Modifié en dernier par dyox le mar. 1 juin 2021 17:46, modifié 1 fois.

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Exécution de scripts Python via boutons page HTML

Message par destroyedlolo » mar. 1 juin 2021 17:01

Bonjour,

En complément de ce qui a été dit (chemin vers python, droit d'accès, ...), je rajouterai qu'il faut aussi que tu t'assures que le sudo fonctionne sans demander de mdp : pourquoi, parce comme le dit sudo sera lancé par l'intermédiaire de la page HTML, il n'aura jamais de réponse s'il doit demander le mdp.

Ensuite, pour débugger,
  • il est possible (conditionnel :mrgreen: ) que tu trouves plus d'info dans les logs d'Apache. En particulier dans ErrorLog
  • si tu n'y as pas les informations demandées, affiche le code source de la page de réponse dans ton navigateur : même si ce n'est pas forcement affiché dans le navigateur, tu y trouveras peut-être d'autres messages d'erreurs (il faudra décommenter temporairement le header() à la fin).
Enfin, si tes scripts python ne sont pas trop compliqués, ca vaudrait peut-être le coup de faire ce qu'ils font dans PHP lui-même. Par exemple s'ils ne font qu'envoyer des messages MQTT, ca se fait très bien en PHP. Idem sans doute s'ils "jouent" avec les GPIOs.

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Répondre

Retourner vers « Présentez vous ! »