Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Raspberry Pi上从Apache运行Python脚本?_Python_Apache_Shell_Raspberry Pi_Raspbian - Fatal编程技术网

如何在Raspberry Pi上从Apache运行Python脚本?

如何在Raspberry Pi上从Apache运行Python脚本?,python,apache,shell,raspberry-pi,raspbian,Python,Apache,Shell,Raspberry Pi,Raspbian,所以,在Raspberry Pi上,我正在使用一个带有web界面的摄像头应用程序,我想通过添加Neopix来添加LED照明。我已经成功地做到了这一点,现在可以在运行两个python脚本时打开和关闭它 解释和问题: 我在/usr/local/bin中有一个可执行的python脚本。 它的所有者为“root” 我在/var/www/html/macros中有一个shell脚本,它是可执行的,必须在/usr/local/bin中运行python脚本。 shell脚本归“www-data”所有 当我手动

所以,在Raspberry Pi上,我正在使用一个带有web界面的摄像头应用程序,我想通过添加Neopix来添加LED照明。我已经成功地做到了这一点,现在可以在运行两个python脚本时打开和关闭它

解释和问题:

我在
/usr/local/bin
中有一个可执行的python脚本。
它的所有者为“root

我在
/var/www/html/macros
中有一个shell脚本,它是可执行的,必须在
/usr/local/bin
中运行python脚本。 shell脚本归“www-data”所有

当我手动运行python文件时,它会执行脚本。
当我手动运行shell脚本时,它会执行python脚本

当我通过单击网页上的按钮来运行shell脚本时,它似乎正确地执行了shell脚本,但是,它似乎没有执行python脚本。
我能做些什么来解决这个问题?


我对权限没有太多经验,但我想强调的是,这是一个封闭的系统,不包含任何敏感信息。因此,安全/最佳实践不是一个问题。我只是想让它发挥作用。

我不是这方面的专家,但我相信要访问
/usr/local/bin/
您需要
root
特权,这解释了为什么您取得了成功,而不是Apache

与其给Apache
root
权限,不如简单地从要执行的单个文件中删除该要求。这可以通过以下方式实现:

$ cd /usr/local/bin
$ sudo chmod 777 your_script.py

现在,经过11个小时和一群人的思考,我们找到了解决问题的办法

问题是Web接口只能作为“www数据”执行,python脚本所依赖的Neopix库需要作为sudo/root执行

这两个因素使得永远不会有直接的方法让脚本一起工作

然而,出现了使用某种管道的想法

一位出色的用户建议我使用sshpass。这将允许将数据传递给ssh,并使其基本上作为根用户执行

来自web界面的数据将被中继到sshpass,这将以所需的权限成功运行所需的脚本


特别感谢来自RRF的Minty Trebor和Falcounet为LPC/STM Discord所做的贡献

感谢您的思考,我们发现了问题和解决方法,我将发表评论进行更新。这是一次非常愉快的旅行。