Page 1 sur 2

Reboot d'un serveur à partir d'un script PHP

Posté : 12 déc. 2008, 11:27
par wo
Bonjour,

je voudrais pouvoir rebooter mon serveur à partir d'un script en PHP installé sur celui-ci.

J'ai essayé le code suivant :
exec("shutdown -r +3 -u {root} -p {password}", $reponse);
...mais ça ne marche pas.

Merci d'avance de votre aide.

Philippe

Posté : 12 déc. 2008, 12:59
par Calimero
Bonjour,

Ce script PHP est-il éxécuté sous forme de page web ?

Posté : 12 déc. 2008, 14:25
par stopher
Salut ,

Je ne pense pas qu'il soit conseillé d'utiliser directement l'utilisateur root pour ce script ...

Perso , je chercherai plutot du coté de sudo sur un user standard de la machine , et la fonction proc_open() pour executer la commande systéme avec les bons paramètres .

Posté : 13 déc. 2008, 02:09
par @rthur
Bonjour,

As-tu essayé de faire un print de ta commande et de la tester en ligne de commande?

Posté : 15 déc. 2008, 11:47
par Ripat
Si ça ne marche pas, linux reste rarement muet sur les causes, essaye en redirigeant le STDERR(2) sur la sortie standard STDOUT(1) comme ceci:

Code : Tout sélectionner

exec("shutdown -r +3 -u {root} -p {password} 2>&1", $reponse); print_r ($reponse);
En passant, il est rarement nécessaire de rebooter une machine Linux. Des deamon oui, mais pas la machine. J'ai des serveurs qui tournent depuis deux ans sans reboot. Il n'y a qu'en cas de changement de noyau qu'il faille le faire et encore, les hackers (sens positif du terme) le font sans reboot. Juste pour le sport!

Re: Reboot d'un serveur à partir d'un script PHP

Posté : 23 déc. 2008, 21:39
par Xenon_54
exec("shutdown -r +3 -u {root} -p {password}", $reponse);
Il n'y a pas de paramètres -u ou -p à la commande shutdown

Le service Apache est probablement exécuté en tant que l'utilisateur nobody, www-data ou apache. Ces utilisateurs ne peuvent exécuter la commande shutdown, seul root ou un utilisateur privilégié peut le faire.

Tu dois ajouter l'utilisateur d'Apache au fichier /etc/sudoers et autoriser l'usage de la commande shutdown via sudo sans password.

Voici un guide pour la gestion de sudoers:
https://help.ubuntu.com/community/Sudoers

Ton script deviendra alors:

Code : Tout sélectionner

exec("sudo shutdown -r +3", $reponse);

Re: Reboot d'un serveur à partir d'un script PHP

Posté : 30 janv. 2009, 23:57
par lolodu67

Le service Apache est probablement exécuté en tant que l'utilisateur nobody, www-data ou apache. Ces utilisateurs ne peuvent exécuter la commande shutdown, seul root ou un utilisateur privilégié peut le faire.

Tu dois ajouter l'utilisateur d'Apache au fichier /etc/sudoers et autoriser l'usage de la commande shutdown via sudo sans password.

Voici un guide pour la gestion de sudoers:
https://help.ubuntu.com/community/Sudoers

Ton script deviendra alors:

Code : Tout sélectionner

exec("sudo shutdown -r +3", $reponse);
J'ai fait ce que tu as dit, j'ai autoriser les admin a executé shutdown sans mdp , mais ça ne fonctionne pas ! Pas moyen de reboot ce foutu pc en php !
Sur le net, on dit partout que c'est faisable, mais on ne dit pas comment ...

Posté : 31 janv. 2009, 11:03
par Ripat
Montre-nous ton fichier sudoers (/etc/sudoers)

Posté : 31 janv. 2009, 17:04
par lolodu67
Bonjour,

Heu ... alors, n'étant pas très fort, je ne vois absolument pas comment faire pour le montrer a part le retaper entièrement !
Je me connecte sur le serveur en SSH via windows, on peu copier coller ?

Posté : 01 févr. 2009, 16:25
par stopher
Salut ,

même en ssh , tu tapes :

Code : Tout sélectionner

sudo visudo
là tu sélectionnes le tout avec ta sourie , ensuite , deux solutions ,

1-> clic droit sur le texte sélectionné copier puis tu vas sur le post php-france , clic droit coller

2-> tu vas sur le post de php-france , et le boutton du milieu de ta sourie permet de coller directement ce que tu selectionnes avec le curseur ( systéme linux )

Apres , tu peux directement importer le fichier sudoers via un scp puis l'ouvrir en local .. mais bon , vue la taille tu fichier , ca complique pour rien ..

Posté : 01 févr. 2009, 21:57
par lolodu67
Heu ... Bah j'ai préférer faire un screen lol
Voila :
http://www.info-actupc.fr/upload/images/1233518209.jpg

Merci d'avance !

Posté : 02 févr. 2009, 09:24
par Ripat
Apparemment, il n'y a que les utilisateurs du groupe nobody qui penvent faire un shutdown.

Quel est le nom d'utilisateur et de groupe de ton serveur apache? Dans le répertoire de configuration d'Apache (ça dépend de ta distro mais sans doute dans /etc/apache2/ ) fait:

Code : Tout sélectionner

$ egrep 'APACHE_RUN_(USER|GROUP)' *
ou bien (dans n'importe quel répertoire):

Code : Tout sélectionner

$ ps -C apache2 -o ruser,rgroup

Posté : 08 févr. 2009, 22:50
par lolodu67
Apparemment, il n'y a que les utilisateurs du groupe nobody qui penvent faire un shutdown.

Quel est le nom d'utilisateur et de groupe de ton serveur apache? Dans le répertoire de configuration d'Apache (ça dépend de ta distro mais sans doute dans /etc/apache2/ ) fait:

Code : Tout sélectionner

$ egrep 'APACHE_RUN_(USER|GROUP)' *
ou bien (dans n'importe quel répertoire):

Code : Tout sélectionner

$ ps -C apache2 -o ruser,rgroup
Excusez moi d'avoir mais autant de temp a répondre, je suis sous debian (je crois, c'est un serveur OVH) et je ne trouve pas /etc/apache2/

Pour le deuxième, ça m'inscrit juste en majuscule :
RUSER RGROUP

Voila, en espérant que ça vous aide à m'aider :D

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 09 févr. 2009, 15:41
par Ripat
Apparemment ton serveur http ne tourne pas sous apache2. Essaye:

Code : Tout sélectionner

ps -C apache -C httpd -o ruser,rgroup

Posté : 09 févr. 2009, 20:51
par lolodu67
Bonsoir,
je me suis enfin inscrit !
Voila ce que me dit cette commande :
Image