2014-01-09 wcdj
之前总结过一篇使用Perl实现Web服务的文章《Web服务器的实现(最小的Perl Web服务器) 》。在工作中经常需要和CGI接口进行交互,当依赖的接口还未实现时,自己可以写一个简单的CGI接口来模拟依赖的接口以完成调试。Bash也是日常使用的脚本之一,本文总结如何使用Bash实现简单的CGI交互。
0 实现一个返回json格式应答的CGI
#!/bin/bash
echo "Content-type: text/html"
echo ""
# ok, we've sent the header, now send some content
echo "{\"ret\":0,\"msg\":\"ok\"}"
测试方法:
将上述的Bash脚本放在Websvr下,可以通过curl命令发送http请求,例如:curl "http://172.25.81.16/cgi-bin/ret_json_ok.sh",然后会返回:{"ret":0,"msg":"ok"}。
1 实现一个form来发送http请求
效果如下图所示:
实现方法分两步:
(1) 写一个简单的html页面,例如,form.html
实现方法,同样实现一个CGI,只是返回的内容是一个html:
(1) 写一个简单的html页面,例如,form.html
<FORM ACTION="/cgi-bin/form_test.sh">
Enter Host: <INPUT name="host">
<INPUT TYPE=SUBMIT VALUE="Submit">
</FORM>
(2) 写一个接收请求的CGI,上面的ACTION已指定,即,form_test.sh
#!/bin/bash
echo 'Content-type: test/html'
echo ''
echo $QUERY_STRING
2 实现一个返回html页面,标题和内容都为Hello World
返回的页面效果如下图:实现方法,同样实现一个CGI,只是返回的内容是一个html:
#!/bin/bash
echo 'Content-type: test/html'
echo ''
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charst=UTF-8">'
echo '<title>Hello World</title>'
echo '</hea