在网页上,我想要一个在远程计算机上启动 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>";
?>