Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

formulaire et system()

1 réponse
Avatar
Hugolino
Bonjour,

J'ai mis un bouton pour démarrer une machine dans une page:
<form method="post" action="kick-deb.php">
<input type="submit" value="Kicker Deborah" />
</form>

Quand je clique ce bouton la page kick-deb.php est bien chargée, tout ce
passe normalement, sauf que...

<?php
echo "<-->\n";
system('TERM=dumb /usr/sbin/etherwake -D 00:E0:4C:02:4C:98');
//echo htmlentities( system("/usr/local/bin/WOL_Deb"));
echo "<-->\n";
system("TERM=dumb /bin/ping -i 5 -w 60 deb");
?>

affiche :

<-->
<-->

et la machine ne s'allume pas.

Si je tape "/usr/sbin/etherwake -D 00:E0:4C:02:4C:98", dans un shell,
ça marche bien sûr.

Quelle est mon erreur ?

Pire: j'ai eu l'idée d'exécuter le script avec le client php, en tapant
simplement "php kick-deb.php" et la machine s'est aussitôt allumée et le
shell depuis lequel j'avais tapé cette commande a bien affiché:

<-->
The target station address is 00:E0:4C:02:4C:98
Packet is ....
...
Sento worked !
<-->

Là, j'avoue qu'il y une subtilité qui m'échappe


Merci de m'aider


--
Concours de bit entre linuxiens : hcgvzr
Hugo (né il y a 1 367 979 756 secondes)

1 réponse

Avatar
Hugolino
Le 31 Aug 2007 07:54:42 GMT, Hugolino a écrit:
Bonjour,

J'ai mis un bouton pour démarrer une machine dans une page:
<form method="post" action="kick-deb.php">
<input type="submit" value="Kicker Deborah" />
</form>

Quand je clique ce bouton la page kick-deb.php est bien chargée, tout ce
passe normalement, sauf que...

<?php
echo "<-->n";
system('TERM=dumb /usr/sbin/etherwake -D 00:E0:4C:02:4C:98');
//echo htmlentities( system("/usr/local/bin/WOL_Deb"));
echo "<-->n";
system("TERM=dumb /bin/ping -i 5 -w 60 deb");
?>

affiche :

<-->
<-->

et la machine ne s'allume pas.


J'ai eu un crash hier et j'avais réinstallé tous les packages pour être
sûr d'avoir un système en l'état...

Sauf que j'avais oublié que mon script s'exécute avec les permissions de
l'utilisateur www-data alors que etherwake ne fonctionne qu'en root et
donc qu'il fallait qu'il soit setuid, propriété que sa réinstallation
avait annulé.

Bref: laissez tomber, un nouveau 'chmod +s /usr/sbin/etherwake' a remis
les choses en ordre.

Si je tape "/usr/sbin/etherwake -D 00:E0:4C:02:4C:98", dans un shell,
ça marche bien sûr.

Quelle est mon erreur ?


De faire ça en root...

Pire: j'ai eu l'idée d'exécuter le script avec le client php, en tapant
simplement "php kick-deb.php" et la machine s'est aussitôt allumée et le
shell depuis lequel j'avais tapé cette commande a bien affiché:

<-->
The target station address is 00:E0:4C:02:4C:98
Packet is ....
...
Sento worked !
<-->


Fait en root aussi

Là, j'avoue qu'il y une subtilité qui m'échappe


Je vais aller m'aérer un peu (un coup de moto ou de planche, on va voir
ça avec la météo :)

Désolé pour le bruit.


--
Faut avoir du temps à perdre.
Lorsqu'il est proféré sur Usenet, cet argument n'a absolument

aucune valeur.
Hugo (né il y a 1 367 995 397 secondes)