2015-09-25 47 views
-2

好洙我得到這個代碼運行SSH命令白衣PHP

<?php 
    $host = "MYSERVERIP"; 
    $user = "root"; 
    $password = "123456"; 
    $command = $_GET["command"]; 

    if($command != null) { 
     //HERE I WANT THE PHP TO SEND THE COMMAND TO THE SERVER 
    } else { 
     echo"No command were given!"; 
    } 
?> 

只要我希望它是這樣工作的:可以說,我去MYSERVERIP/sendcommand.php?command=reboot 然後我想我的服務器重新啓動,我怎麼能做到這一點?我的服務器正在運行debian。

伊夫tryed通過閱讀http://php.net/manual/en/function.ssh2-exec.php瞭解它但dosnt讓我的地方:/

+0

命令當你說「那dosnt讓我到某個地方,「你是什麼意思?當你嘗試使用它時發生了什麼? – Jacob

回答

2

,如果你想在同一臺服務器PHP運行運行命令 - 只是用EXEC了shell_exec

+0

是的,但我如何建立連接? –

+0

連接到什麼? 只是把** php -r「exec('ls -lah');」**在你的控制檯上,如果你在linux上工作得到例子 或者把它放在php文件中.. – Dmitry

+0

<?php // sendcommand .php文件 if(isset($ _ GET ['command'] && $ _GET ['command'] ==='reboot')){ exec('reboot now'); } – Dmitry

0

如果您的文件與PHP文件相同的服務器,你可以使用

exec() or shell_exec(string $cmd) 

如果不是同一臺服務器,這是不可能的,所有我知道

0

如果您想在與運行PHP的服務器不同的服務器上發出命令,則需要以ssh2_connect開頭。

如果要在服務器上本地發出命令,請先閱讀program execution

我建議你密切關注這個的安全性方面。 您還應該知道,如果您處於共享主機環境中,這兩個選項可能會被禁用。

1

療法就是一個例子就在那裏您的鏈接...

拌上你的東西看起來像

$host = "MYSERVERIP"; 
$user = "root"; 
$password = "123456"; 
$command = $_GET["command"]; 

if($command != null) { 
    $connection = ssh2_connect('shell.example.com', 22); 
    ssh2_auth_password($connection, 'username', 'password'); 

    $stream = ssh2_exec($connection, $_GET["command"]); 
} else { 
    echo"No command were given!"; 
} 

假設服務器會接受這樣的