如何通过cgi执行bash脚本

时间:2015-07-10 06:50:22

标签: bash cgi

我正在尝试使用cgi在网页页面中调用bash脚本。我有部分工作,echo命令似乎工作,但其他命令不工作。

我正在使用lighttpd,我有一个文件cgi.sh,它调用demo_start.sh

cat /srv/http/cgi.sh

#!/bin/bash
. includes/srv/http/demo_start.sh
/usr/bin/bash /srv/http/demo_start.sh

cat /srv/http/demo_start.sh

#!/bin/bash
printf "Content-Type: text/plain\n\n"

ip route get 1 | awk '{print $NF;exit}'>/srv/http/ip.txt
file="/srv/http/ip.txt"
ip_address=$(cat ${file})

echo ${ip_address}

file="/srv/http/demo_count.txt"
count=$(cat ${file})

((count++))
echo ${count} > ${file}

echo Demo started ${count} times

sed -i".bak" '$d' /srv/http/index.html
sed -i '$ a <a href="http://'${ip_address}':'${count}'">Start Demo</a<br/>' /srv/http/index.html

当我访问http://localhost/cgi.sh时,我得到了

172.27.103.31

演示开始8056次

如果我刷新,我会

172.27.103.31

演示开始8057次

所有echo命令都正常工作,它可以正确读写我的计数器文件。但是sed命令没有运行,因为我的index.html没有更新。

如果我从bash提示符中删除了demo_start.sh,它可以正常工作。当我通过cgi调用脚本时如何获取所有命令?

提前致谢

0 个答案:

没有答案