formulaire et system()

Le
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 "<-->";
system('TERM=dumb /usr/sbin/etherwake -D 00:E0:4C:02:4C:98');
//echo htmlentities( system("/usr/local/bin/WOL_Deb"));
echo "<-->";
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)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Hugolino
Le #13680
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:
<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)

Publicité
Poster une réponse
Anonyme