我正在尝试使用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调用脚本时如何获取所有命令?
提前致谢