python - 如何在 Raspberry Pi 上从 Apache 运行 Python 脚本?
问题描述
因此,在 Raspberry Pi 上,我正在使用带有 Web 界面的相机应用程序,我想通过添加 neopixel 来添加 LED 照明。我已经成功地做到了这一点,现在可以打开和关闭运行两个 python 脚本。
解释和问题:
我有一个/usr/local/bin
可执行的python脚本。
它归“根根”所有。
我有一个/var/www/html/macros
可执行的 shell 脚本,并且必须在/usr/local/bin
. shell 脚本归“ www-data ”所有
当我手动运行 python 文件时,它会执行脚本。
当我手动运行 shell 脚本时,它会执行 python 脚本。
当我通过单击网页上的按钮运行 shell 脚本时,它似乎正确执行了 shell 脚本,但是,它似乎没有执行 python 脚本。
我能做些什么来解决这个问题?
我对权限不是很有经验,但我想强调一个事实,即这是一个不包含任何敏感信息的封闭系统。所以安全/最佳实践不是问题。我只想完成这项工作。
解决方案
现在,经过 11 个小时和一群人一起思考,我们找到了解决问题的方法。
问题原来是Web界面只能以‘www-data’执行,而python脚本所依赖的NeoPixel库需要以sudo/root执行。
这两个因素使得永远不会有直接的方法让脚本一起工作。
然而,出现了使用某种管道的想法。
一位出色的用户建议我使用 sshpass。这将允许将数据传递给 ssh 并使其本质上以 root 用户身份执行。
来自 Web 界面的数据将被转发到 sshpass,这将成功地以所需的权限运行所需的脚本。
特别感谢 RRF 的 Minty Trebor 和 Falcounet 为 LPC/STM Discord!
推荐阅读
- android - Firebase 获取错误数据
- c - Get command line parameters as one large string
- python - 如何在 Python 中按工作日、月份等对 pandas 时间码系列进行排序/分组?
- flutter - Flutter:添加共享扩展
- c# - 如何从另一个类启用 void bool?
- wordpress - 如何更改 Woocommerce 购物车图标
- java - 向嵌入式 Jetty 添加多个端点
- python - xtensor 和 xsimd:提高还原性能
- php - laravel:如何使用打开模式设置会话
- asp.net - 应用程序在配置中的信任级别