【问题标题】:How to run a Python script from Apache on Raspberry Pi?如何在 Raspberry Pi 上从 Apache 运行 Python 脚本?
【发布时间】:2021-04-02 15:23:39
【问题描述】:

因此,在 Raspberry Pi 上,我正在使用带有 Web 界面的相机应用程序,我想通过添加 neopixel 来添加 LED 照明。我已经成功完成了这项工作,现在可以打开和关闭运行两个 python 脚本。

解释和问题:

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

我在/var/www/html/macros 中有一个可执行的shell 脚本,并且必须在/usr/local/bin 中运行python 脚本。 shell 脚本归 'www-data'

所有

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

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

我对权限不是很熟悉,但我想强调一个事实,即这是一个不包含任何敏感信息的封闭系统。所以安全/最佳实践不是问题。我只是想完成这项工作。

【问题讨论】:

    标签: python apache shell raspberry-pi raspbian


    【解决方案1】:

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

    与其授予 Apache root 权限,不如简单地从您要执行的单个文件中删除该要求。这可以通过

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

    【讨论】:

    • 感谢您的思考,我们找到了问题和解决方法,我会更新评论。这真是一段旅程。
    【解决方案2】:

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

    问题原来是Web界面只能以'www-data'执行,而python脚本所依赖的NeoPixel库需要以sudo/root执行。

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

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

    一位出色的用户建议我使用 sshpass。这将允许将数据传递给 ssh 并使其本质上以 root 用户身份执行。

    来自 Web 界面的数据将被转发到 sshpass,这将成功地以所需的权限运行所需的脚本。

    特别感谢 RRF 的 Minty Trebor 和 Falcounet 为 LPC/STM Discord!

    【讨论】:

      猜你喜欢
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      相关资源
      最近更新 更多