linux - 接收 HTTP GET 请求并触发操作的最简单方法是什么?

标签 linux shell http webserver raspberry-pi

我有一个 Raspberry Pi,用作 DLNA、CIFS、VPN 等的全天候多用途设备。现在我买了一个 TellStick,这是一个可以向 radio 源开关发送 433MHz radio 命令的 USB 设备,调光器等。制造商提供用于 Linux 的源代码和工具,这真的很棒,顺便说一句。

使用特殊命令(名为 tdtool)我可以向我的电源开关发送命令,例如

tdtool --on 1

这会打开设备 1。它运行良好且稳定,因此我想摆脱 shell 命令以使处理更容易。我的想法是设置一个非常简单的 Web 服务器,只需要能够接收 GET 或 POST 请求并触发一些操作,例如运行命令“tdtool --off 3”。所以网络服务器甚至不需要提供页面,它只需要监听请求。

我想创建一个基于 HTTP 的解决方案,因为这样我就可以将我的智能手机用作 Remote 。有一个名为“Tasker”的 Android 应用程序本身就很棒,但它也允许根据特定条件发送自定义的 HTTP 请求,这样我就可以在回家时让我的灯变亮(并且 Tasker 识别到我的连接WIFI 网络或类似网络)。

由于 Raspberry 不是最强大的硬件,我希望尽可能简单。基本上,我需要这个:

一个HTTP get请求进来,例如:

/switch?device=1&action=on

根据这个请求,服务器应该将以某种方式翻译成这样:

tdtool --on 1

我确信我会找到一种方法来使用 Apache 和 PHP 构建类似的东西,但我认为这对我来说有点过分了。你会推荐什么?是否有一些很酷的 python 魔法可以实现这一点?或者一些带有 CGI 脚本的奇特的迷你网络服务器?非常感谢任何想法和代码示例,提前致谢!

最佳答案

虽然您的问题过于“主观”,但几乎可以立即找到解决方案:

nginx - How to run a shell script on every request?

但是既然你在谈论 R-Pi,也许你会发现 Python 内置 CGIHTTPServer (Python 2)或 http.server (Python 3) 模块更适合执行 shell 命令的任务

关于linux - 接收 HTTP GET 请求并触发操作的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27321523/

相关文章:

linux - 将任意字符串(从标准输入或文件)读入 bash 并在不进行任何 shell 扩展的情况下使用它

javascript - 使用 Jquery 从 url 获取响应

html - 为什么可以使用GET方法来提交表单数据?

linux - 如何使用shell变量更改特定位置的字符

linux - 如何在linux脚本中提取字符串中的数字和特殊字符

linux - linux 中的 sed 命令

node.js - 慢速磁盘 I/O 是否会降低 Node.js 应用程序其余部分的性能?

linux - 如何在 linux 中使用 sed 做到这一点?

linux - 有没有更好的方法从 arp 表中获取 mac 地址?

linux - Amazon Linux 正在阻止传出的 http 调用