Discussion:
formulaire et system()
(trop ancien pour répondre)
Hugolino
2007-08-31 07:54:42 UTC
Permalink
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)
Hugolino
2007-08-31 16:16:28 UTC
Permalink
Post by Hugolino
Bonjour,
<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");
?>
<-->
<-->
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.
Post by Hugolino
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...
Post by Hugolino
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
<-->
The target station address is 00:E0:4C:02:4C:98
Packet is ....
...
Sento worked !
<-->
Fait en root aussi
Post by Hugolino
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.
--
Post by Hugolino
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)
Continuer la lecture sur narkive:
Loading...