【发布时间】:2017-05-08 20:18:47
【问题描述】:
我的路由器上有一个简单的 lighttpd 网络服务器。在它的 .conf 文件中,我知道我需要设置
$HTTP["querystring"] =~ "cams=on" { telnet 通过托管 poe 开关打开摄像头 }
我遇到的问题是试图弄清楚如何真正让它运行一个将 telnet 命令发送到我的 poe 交换机的脚本。我从来没有做过这样的事情,我无法为任何不熟悉网络服务的人找到任何帮助。
【问题讨论】:
我的路由器上有一个简单的 lighttpd 网络服务器。在它的 .conf 文件中,我知道我需要设置
$HTTP["querystring"] =~ "cams=on" { telnet 通过托管 poe 开关打开摄像头 }
我遇到的问题是试图弄清楚如何真正让它运行一个将 telnet 命令发送到我的 poe 交换机的脚本。我从来没有做过这样的事情,我无法为任何不熟悉网络服务的人找到任何帮助。
【问题讨论】:
使用 lighttpd 有多种方法可以做到这一点。最简单的方法之一是使用 CGI。 https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModCGI
server.modules += ( mod_cgi )
$HTTP["query-string"] =~ "cams=on" {
cgi.assign = ( "" => "/path/to/control-script" )
}
当 lighttpd 接收到带有该查询字符串的请求时,您的 /path/to/control-script 将被执行。 (在网络上搜索有关 CGI 脚本环境中预期内容的教程,例如环境变量 QUERY_STRING="cams=on")
请注意,建议您将脚本限制为特定路径,而不是在对服务器任何其他部分的任何请求中截取该查询字符串。如果您的脚本在已知路径上运行并且可以处理查询字符串中的多个不同命令,则可以省略 $HTTP["query-string"] 条件。
server.modules += ( mod_cgi )
$HTTP["url"] =~ "^/control/" {
$HTTP["query-string"] =~ "cams=on" {
cgi.assign = ( "" => "/path/to/control-script" )
}
}
最后,您可能想使用 lighttpd mod_auth 来限制谁可以访问控制脚本。 https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModAuth
【讨论】: