使用PHP执行shell命令,例如shell_exec()等,在远程主机上?

时间:2010-09-19 06:36:23

标签: php shell shell-exec

是否可以在远程计算机(而不是localhost)上执行shell命令?例如

之类的东西
$output = shell_exec("unzip filename.zip");

您可以假设您拥有远程计算机上用户帐户的登录凭据,以及远程root用户名,密码和cpanel远程访问密钥。

3 个答案:

答案 0 :(得分:1)

如果您的意思是“远程计算机”,而不是“非客户端计算机”,答案是不合格的是;通过PHP exec函数运行的命令将在Web服务器上执行。

如果你的意思是“不是网络服务器”,答案是微不足道的。您只能直接在运行PHP的服务器上执行命令。但是,这些命令可以通过SSH等机制在远程计算机上运行其他命令。因此,例如,如果您的Web服务器具有对远程计算机的无密码ssh访问(这是一个非常糟糕的主意),这将起作用:exec('ssh otherhost someremotecommand');。适合您的解决方案取决于您的用途。

答案 1 :(得分:1)

我知道这个问题很古老,但对于这个问题的观众来说。

您也可以使用ssh2_exec。 http://php.net/manual/en/function.ssh2-exec.php

<?php

$ip = 'ip_address'; 
$user = 'username'; 
$pass = 'password'; 

$connection = ssh2_connect($ip); 
ssh2_auth_password($connection,$user,$pass); 
$shell = ssh2_shell($connection,"bash");

?>

答案 2 :(得分:0)

是的,并且无需更改任何代码即可。但是,如果您的服务器将PHP置于安全模式(较小的共享主机方案通常会这样做),您可能无法执行此操作。

提示:您可以使用此简写来获取命令的输出:

$output = `command here`