鼓捣 bash cgi
[总点击:754次]
2009年9月1日
看了骨头的博文:Bash其实也可以做CGI用 也按捺不住,尝试了一把,呵呵,其他语言搞不定,bash 还是玩的转滴。
在自己电脑上面用 lighttpd 搭建了个 webserver,配置了一下,将 /etc/lighttpd.d/lighttpd.conf 里面 mod_cgi 前面的注释去掉,需要注意的是,如果你要使用 .sh 结尾的 cgi 脚本,那么需要将这行改成
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".sh" )
并在 cgi.assign 段添加一个
".sh" => "/bin/bash"
,写一个小脚本测试了一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #!/bin/bash get_args() { local arg_txt arg arg_txt="$QUERY_STRING" for arg in `echo "$arg_txt"|tr "&" " "`; do arg="$(echo $arg|sed "s/%20/ /g"|ascii2uni -a J 2>/dev/null)" ARGS="${ARGS} $(echo $arg|sed "s/=.*$//")" export "$arg" done } echo "Content-type: text/html" echo echo "<HTML><HEAD>" echo "<TITLE>Bash CGI writen by Xiooli?</TITLE>" get_args echo "</HEAD><BODY>" echo "<B> This is XIOOLI's bash cgi </B>" echo "<P>" eval "$cmd"|sed "s/$/<P>/g" for i in $ARGS; do echo "<P> $i=`eval echo \\$$i`" done echo "</BODY></HTML>" |
来一个测试,url 如下: http://localhost/cgi-bin/tst.sh?hello=xiooli%E5%93%A5%E5%93%A5&kk=yy&bb=pp&cmd=who
得到结果:
This is XIOOLI’s bash cgi
xiooli :0 Aug 31 09:07
xiooli pts/0 Aug 31 09:07 (:0)
hello=xiooli哥哥
kk=yy
bb=pp
cmd=who
呵呵,好玩滴咯,以后写 cgi 就用 bash 鸟 ^^
最近评论