【问题标题】:CGI scripts for bash commands用于 bash 命令的 CGI 脚本
【发布时间】:2013-06-12 22:10:15
【问题描述】:

我对这一切有点陌生,如果我做错了什么,请告诉我。

我正在用我的树莓派做一些 gpio 的东西,目前我正在做一些东西,以便可以通过 Web 界面控制 gpio 引脚。我这样做的一种方法是使用 bash CGI 脚本来控制引脚,并从浏览器执行它们。

到目前为止,我可以让它工作的唯一方法是浏览器加载页面“.../cgi-bin/gpio1.cgi”等,其中包含代码:

#!/bin/bash
echo "Content-type: text/html"
echo ""
...gpio stuff...

这可行,但浏览器会导航到此脚本创建的空白页面。

有没有办法在不离开网页的情况下执行这些脚本,因此这些脚本不是编写 HTML 而是专注于实际的 gpio 内容?

谢谢

【问题讨论】:

    标签: html apache bash cgi raspberry-pi


    【解决方案1】:

    试试这个:

    #!/bin/bash
    echo "Status: 204 No Content"
    ...gpio stuff...
    

    HTTP 响应必须以状态行开头;如果 CGI 没有指定状态,网络服务器通常会添加状态“200 Ok”。该状态必须伴随响应正文,这将形成新的网页。

    您想要的状态是204,表示请求已满足但没有响应,浏览器应停留在同一页面上。通常,这将是对POST 请求的响应,而不是GET 请求,但无论如何它应该可以工作。由于204 响应不需要响应正文(实际上,它不允许),因此不必在状态行之后输出一个空行,但如果脚本需要很长时间,您可能需要一个该运行了。

    【讨论】:

    • 谢谢,但是如何从 HTML 运行它?直接导航到浏览器中的脚本(即键入 .../cgi-bin/script.cgi)会导致 500 服务器错误,那么我应该怎么做呢?谢谢
    • 对不起,我应该说,脚本运行完美,但我使用 href 访问它,它会将浏览器带到 500 内部服务器错误页面
    • @ConorTaylor:抱歉,我没有意识到您使用的是真正的网络服务器 :) 我编辑了答案以考虑到这一点,尽管我不知道您使用的是哪个网络服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多