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

wo
Invité n'ayant pas de compte PHPfrance

12 déc. 2008, 11:27

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

ViPHP
ViPHP | 2287 Messages

12 déc. 2008, 12:59

Bonjour,

Ce script PHP est-il éxécuté sous forme de page web ?
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 1136 Messages

12 déc. 2008, 14:25

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 .

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

13 déc. 2008, 02:09

Bonjour,

As-tu essayé de faire un print de ta commande et de la tester en ligne de commande?
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 1380 Messages

15 déc. 2008, 11:47

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!
ripat

Mammouth du PHP | 1885 Messages

23 déc. 2008, 21:39

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);
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

lolodu67
Invité n'ayant pas de compte PHPfrance

30 janv. 2009, 23:57


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 ...

ViPHP
ViPHP | 1380 Messages

31 janv. 2009, 11:03

Montre-nous ton fichier sudoers (/etc/sudoers)
ripat

lolodu67
Invité n'ayant pas de compte PHPfrance

31 janv. 2009, 17:04

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 ?

ViPHP
ViPHP | 1136 Messages

01 févr. 2009, 16:25

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 ..

lolodu67
Invité n'ayant pas de compte PHPfrance

01 févr. 2009, 21:57

Heu ... Bah j'ai préférer faire un screen lol
Voila :
http://www.info-actupc.fr/upload/images/1233518209.jpg

Merci d'avance !

ViPHP
ViPHP | 1380 Messages

02 févr. 2009, 09:24

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
ripat

Petit nouveau ! | 4 Messages

08 févr. 2009, 22:50

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]

ViPHP
ViPHP | 1380 Messages

09 févr. 2009, 15:41

Apparemment ton serveur http ne tourne pas sous apache2. Essaye:

Code : Tout sélectionner

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

Petit nouveau ! | 4 Messages

09 févr. 2009, 20:51

Bonsoir,
je me suis enfin inscrit !
Voila ce que me dit cette commande :
Image