【问题标题】:Running a Shell Script from Raspberry Pi Webpage从 Raspberry Pi 网页运行 Shell 脚本
【发布时间】:2016-07-06 14:47:54
【问题描述】:

我在我的 Raspberry Pi 上运行 Apache 网页。当我连接到 Pi 的网络时,我可以访问该网页。在这个网页上,我想要一个按钮来运行位于 pi 内部的 shell 脚本。所有脚本正在运行 fswebcam,以便连接到 pi 的 USB 网络摄像头截取屏幕截图。我不能做的是从 pi 的网页调用 .sh 脚本。也许从 cgi-bin 将它作为 .cgi 运行?甚至不确定语法在 php 中的外观。任何帮助表示赞赏。

这是运行 fswebcam 的 .sh 脚本以防万一:

#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H%M")
fswebcam -r 1920x1080 --no-banner /var/www/html/$DATE.jpg

干杯!

【问题讨论】:

  • 您可以使用system()exec()shell_exec() 或类似方法通过PHP 运行它。或者配置 apache 以使用 cgi-bin 运行 shell 脚本(也许httpd.apache.org/docs/current/howto/cgi.html 可以提供帮助)

标签: php shell networking raspberry-pi


【解决方案1】:
<?php
$last_line = system('path/to/your_script.sh', $retval);
echo "<pre>".print_r($last_line,true)."</pre>";
echo "<pre>".print_r($retval,true)."</pre>";

如果您打开页面,这应该会运行脚本并以可读的方式打印尽可能多的信息。

【讨论】:

  • 绝对路径似乎没有通过,我打开页面时显示的值为 0。我将其更改为引用它自己的本地文件夹并将 .sh 移到那里,现在它返回 127。但不确定从这些数字中得出什么结论?
  • 您是否从网络摄像头获得快照?否则,请查看网络摄像头本身。如果您可以从命令行访问它,则还应该有关于您可以获得的结果的信息。
  • 当我从命令行运行 shell 时,我得到了一个快照,但是当我打开网页时没有任何反应。
  • 我试图通过在浏览器栏中输入它的位置来将它作为 .cgi 从 /usr/lib/cgi-bin/ 运行,我收到此错误:“内部服务器错误服务器遇到内部错误或配置错误,无法完成您的请求。有关此错误的更多信息可能在服务器错误日志中可用。”但是,如果我从同一个文件夹运行一个更简单的脚本,它就可以工作,就像一个 hello world 脚本:#!/bin/bash echo -e "Content-type: text/html\n\n" echo "

    Hello World"

  • 然后检查错误日志以了解您在其中得到的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 2021-05-03
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
相关资源
最近更新 更多