首页 > Script > 鼓捣 bash cgi

鼓捣 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 鸟 ^^

Script ,

本文的评论功能被关闭了.