是否可以在远程计算机(不是本地主机)上执行 shell 命令?例如像这样的事情
$output = shell_exec("unzip filename.zip");
您可以假设您拥有远程计算机上用户帐户的登录凭据,以及远程 root 用户名、密码和 cpanel 远程访问密钥。
是否可以在远程计算机(不是本地主机)上执行 shell 命令?例如像这样的事情
$output = shell_exec("unzip filename.zip");
您可以假设您拥有远程计算机上用户帐户的登录凭据,以及远程 root 用户名、密码和 cpanel 远程访问密钥。
如果您的意思是“不是客户端计算机”中的“远程计算机”,那么答案是肯定的;通过 PHPexec
函数运行的命令将在 Web 服务器上执行。
如果您的意思是“不是网络服务器”,那么答案是稍微有点模糊的“是”。您只能在运行 PHP 的服务器上直接执行命令。但是,这些命令随后可以通过 SSH 等机制在远程机器上运行其他命令。因此,例如,如果您的 Web 服务器对远程计算机具有无密码 ssh 访问权限(这是一个非常糟糕的主意),这将起作用:exec('ssh otherhost someremotecommand');
. 适合您的解决方案取决于您所需的用途。
我知道这个问题已经很老了,但是对于这个问题的观众来说。
您也可以使用 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");
?>
是的,无需更改任何代码即可。但是,如果您的服务器将 PHP 置于安全模式(较少的共享主机计划经常这样做),您可能无法做到这一点。
提示:您可以使用此速记来获取命令的输出:
$output = `command here`