如何在Raspberry Pi上从Apache运行Python脚本?
所以,在Raspberry Pi上,我正在使用一个带有web界面的摄像头应用程序,我想通过添加Neopix来添加LED照明。我已经成功地做到了这一点,现在可以在运行两个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”所有 当我手动
/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
与其给Apacheroot
权限,不如简单地从要执行的单个文件中删除该要求。这可以通过以下方式实现:
$ 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所做的贡献 感谢您的思考,我们发现了问题和解决方法,我将发表评论进行更新。这是一次非常愉快的旅行。