使用 php 从远程计算机在 ubuntu 上执行 shell 命令

使用 php 从远程计算机在 ubuntu 上执行 shell 命令

在网页上,我想要一个在远程计算机上启动 python 脚本的按钮。有没有办法在 php 中做到这一点?更具体地说,我希望在远程计算机上执行以下 shell 命令:

screen -d -m ./script.py

我认为这可能并不简单,因为无需 root 访问权限即可执行脚本所需的权限。

答案1

首先我要指出,这在很多层面上都是不安全的方法。话虽如此:

如果您必须是 root 才能执行 script.py 那么您的网站用户必须具有 sudoers 配置。首先,您需要找出您的网站用户。

然后为该用户设置 sudo 权限,以便他能够在没有密码的情况下执行 script.py,即:

apache ALL=NOPASSWD: /full/path/to/your/script.py

然后将可执行位添加到 script.py 中:

chmod +x /full/path/to/your/script.py

也许您必须将 py 脚本的标头更改为:

#! /usr/bin/python

之后,在您的 php 中,您可以使用 shell_exec 执行脚本,例如:

$output = shell_exec('/full/path/to/your/script.py');

答案2

您可以通过以下片段来做到这一点,但您的请求听起来像是一个安全问题。如果远程主机有一种可以通过 HTTP 查询的 API,那就更好了

<?php
   $output = shell_exec('ssh user@remotehost script.py');
   echo "<pre>$output</pre>";
?>

相关内容