2017-09-15 2 views
-1

Je veux éteindre l'ordinateur à distance qui ont un même réseau avec moi, dans cmd.exe nous pouvons exécuter ce faire queComment éteindre l'ordinateur à distance avec exec() php

shutdown /m \\192.168.1.2 /s /f /c 'PC will shutdown in 5 seconds' /t 5 

mais je l'ai essayé avec php commande exec() et il n'a rien fait. Je mets la commande php dans shutdown.php

exec("shutdown /m \\192.168.1.2 /s /f /c 'PC will shutdown in 5 seconds' /t 5"); 
+0

privilèges root sont nécessaires. Peut-être ajouter un utilisateur web à sudoers et accorder seulement cette commande. – AbraCadaver

+0

Je vois cmd.exe, essayez-vous d'exécuter la commande sur une machine Windows? edit: si oui, essayez peut-être d'exécuter un fichier * .bat pour exécuter la commande. – Odyssey1111

+0

Privilèges root @AbraCadaver? J'ai utilisé Windows 7 OS. L'ordinateur cible a le même compte d'administrateur avec mon ordinateur de sorte qu'il peut fonctionner dans cmd.exe, mais il ne peut pas fonctionner quand il cames avec exec() –

Répondre

0

Essayez ceci. à la place du nom d'utilisateur, mettre un nom d'utilisateur et un mot de passe administrateur. mettre le domaine s'il existe. puis mettez le nom du fichier bat là. le fichier bat contiendra la commande shutdown. essayez aussi de mettre directement la commande là-bas.

runas /U username /P password /D Domain /E shutdown.bat 

Cherché de la communauté, a trouvé cet avis

Tout d'abord, juste pour vous faire savoir que vous essayez de réinventer la roue . Qu'est-ce que vous cherchez vraiment, c'est expect (1), qui est un utilitaire de ligne de commande destiné à faire exactement ce que vous voulez sans impliquant PHP.

Cependant, si vous voulez vraiment écrire votre propre code PHP, vous devez utiliser proc_open. Voici quelques bons exemples de code à la lecture de STDOUT et écrit à STDIN du processus enfant à l'aide proc_open:

http://www.php.net/manual/en/function.proc-open.php#79665 Comment passer variables comme stdin dans la ligne de commande de PHP http://camposer-techie.blogspot.com/2010/08/ejecutando-comandos-sobre-un-programa.html (celui-ci est en espagnol, désolé , mais le code est bon) Enfin, il est également un module Expect PECL pour PHP.

Espérons que cela aide.

source: PHP Exec command - How to pass input to a series of questions

+0

où je devrais mettre cette commande? –

+0

à l'intérieur de l'exec ("ici!") –

+0

cela ne marche pas, mais quand j'utilise le système ("runas.exe/user: administrator shutdown.bat"); il sort le texte "Entrez le mot de passe pour l'administrateur:", et comment nous pouvons remplir le mot de passe? –