yidehui 发表于 2013-9-3 13:07:26

关于linux的BOA,跪求大家一定要帮忙!!!!!!

本帖最后由 yidehui 于 2013-9-3 13:55 编辑

这几天在2440上移植了BOA,目前使用HTML编写网页,使用c语言编写cgi程序,用nfs挂载,使用浏览器可以正常访问了网页。

我的cgi程序放置的目录:/var/www/cgi-bin/

网页放置的目录:/var/www/

但是我把c语言改换成bash脚本之后就不行了,我只是想在网页上显示几行字而已啊!

编写的bash脚本------abc.sh
#!/bin/bash
                                                                     
echo "Content-type: text/html\n\n"                                             
echo ""
echo "hello world"

其中abc.sh脚本我经过了以下两条命令的处理:
chmod 777 abc.sh
dos2unix abc.sh
abc.sh的存放路径跟c语言编写的cgi程序的路径一样!

而网页abc.html 的代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试</title>
</head>
<body>
    <form id="form1" name="form1" method="get" action="/cgi-bin/abc.sh">
      <input type="submit" name="Submit" value="提交" />
   </form>
</body>
</html>

网页截图如下所示:


但是当我点击确定按钮是却显示



同时2440串口输出 cgi_header: unable to find LFLF




这是我的boa.conf,不知道如果改用bash的话,是不是要进行另外设置,这里先给出来。




Port 80




User 0
Group 0




ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
ServerName weibo.com
DocumentRoot /var/www
UserDir public_html
DirectoryIndex index.html
DirectoryMaker /usr/lib/boa/boa_indexer
KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /etc/mime.types
DefaultType text/plain
CGIPath /bin:/usr/bin:/usr/local/bin
Alias /doc /usr/doc
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /cgi-bin/ /var/www/cgi-bin/

我现在很无语啊!用c语言可以,但是用bash编程却不可以!大家给点思路啊!

eric.zhc 发表于 2013-9-3 13:22:15

是不是 method="get" action="/cgi-bin/abc.cgi"应该改成 method="get" action="/cgi-bin/abc.sh", 你的目录下都没有abc.cgi这个文件。。。。

eric.zhc 发表于 2013-9-3 13:23:13

或者把abc.sh重命名成agc.cgi也可以

yidehui 发表于 2013-9-3 13:55:21

eric.zhc 发表于 2013-9-3 13:23 static/image/common/back.gif
或者把abc.sh重命名成agc.cgi也可以

刚才复制黏贴的时候错误,其实两者后缀都是相同的

eric.zhc 发表于 2013-9-3 14:08:04

应该是你的shell脚本问题,你在PC机上./abc.sh 执行成功过吗? 或者在板子上./abc.sh执行成功过吗?

yidehui 发表于 2013-9-3 14:11:14

关于bash脚本在cgi上应用,我在网上只找到 http://tieba.baidu.com/p/2436688523

不过只是Apache + bash,不是BOA + bash。不晓得是不是要另外进行配置?

yidehui 发表于 2013-9-3 14:43:26

eric.zhc 发表于 2013-9-3 14:08 static/image/common/back.gif
应该是你的shell脚本问题,你在PC机上./abc.sh 执行成功过吗? 或者在板子上./abc.sh执行成功过吗? ...

可以啊!
运行结果如下所示:

book@book-desktop:/work/drivers_and_test/web_project$ ./abc.sh
Content-type: text/html\n\n

hello world

yidehui 发表于 2013-9-3 14:44:42

eric.zhc 发表于 2013-9-3 14:08 static/image/common/back.gif
应该是你的shell脚本问题,你在PC机上./abc.sh 执行成功过吗? 或者在板子上./abc.sh执行成功过吗? ...

但是在2440的板子上运行时,显示

# ./abc.sh
-sh: ./abc.sh: not found

yidehui 发表于 2013-9-3 14:48:21

eric.zhc 发表于 2013-9-3 14:08 static/image/common/back.gif
应该是你的shell脚本问题,你在PC机上./abc.sh 执行成功过吗? 或者在板子上./abc.sh执行成功过吗? ...

2440开发板上输入env命令,显示如下:

USER=root
OLDPWD=/var/www/cgi-bin
HOME=/
TERM=vt102
PATH=/sbin:/usr/sbin:/bin:/usr/bin
SHELL=/bin/sh
PWD=/etc/init.d

yidehui 发表于 2013-9-3 14:51:23

eric.zhc 发表于 2013-9-3 14:08 static/image/common/back.gif
应该是你的shell脚本问题,你在PC机上./abc.sh 执行成功过吗? 或者在板子上./abc.sh执行成功过吗? ...

在2440上输入以下命令:






eric.zhc 发表于 2013-9-3 14:55:58

#!/bin/bash 改成#!/bin/sh 以后别到处抄代码了。。。

yidehui 发表于 2013-9-3 15:02:46

eric.zhc 发表于 2013-9-3 14:55 static/image/common/back.gif
#!/bin/bash 改成#!/bin/sh 以后别到处抄代码了。。。

现在变成了下载!不是打印。




eric.zhc 发表于 2013-9-3 15:03:38

把abc.sh改成abc.cgi呢?

yidehui 发表于 2013-9-3 15:07:36

eric.zhc 发表于 2013-9-3 15:03 static/image/common/back.gif
把abc.sh改成abc.cgi呢?

如果把sh后缀改成cgi,那么网页那里的form action也要改成cgi

我试了一下,还是显示下载界面

yidehui 发表于 2013-9-3 15:12:49

eric.zhc 发表于 2013-9-3 15:03 static/image/common/back.gif
把abc.sh改成abc.cgi呢?

貌似板子好像不认识这文件!?不把他当成cgi程序!

eric.zhc 发表于 2013-9-3 15:15:46

User 0
Group 0
改成
User root
Group root

yidehui 发表于 2013-9-3 15:22:16

eric.zhc 发表于 2013-9-3 15:03 static/image/common/back.gif
把abc.sh改成abc.cgi呢?

c语言的cgi程序之所以能被运行,打印出文字,是因为arm-linux-gcc 编译,

而是用bash编程的话,不用做什么相关类似的吗?

yidehui 发表于 2013-9-3 15:25:26

本帖最后由 yidehui 于 2013-9-3 15:27 编辑

eric.zhc 发表于 2013-9-3 15:15 static/image/common/back.gif
User 0
Group 0
改成


我修改boa.conf后运行 ./boa

2440显示No such user: root



这是我的环境变量:
# env
USER=root
OLDPWD=/usr/sbin
HOME=/
TERM=vt102
PATH=/sbin:/usr/sbin:/bin:/usr/bin
SHELL=/bin/sh
PWD=/usr/sbin

yidehui 发表于 2013-9-3 15:51:47

本帖最后由 yidehui 于 2013-9-3 16:33 编辑

跪求大侠们指导!!!我已经苦恼了很久啊!!{:cry:}{:cry:}

跪求大侠们解答!!!小弟磕头了!!!

yidehui 发表于 2013-9-3 16:02:26

本帖最后由 yidehui 于 2013-9-3 16:46 编辑

下面是我的网页文件abc.html和cgi脚本abc.sh的附件,代码极短!!!不到1k !!希望大侠们能测试一下!解决我这个cgi程序的字符打印问题!





kelp 发表于 2013-9-3 16:58:56

echo "Content-type: text/html\n\n"
修改为echo "Content-type: text/html"试试

yidehui 发表于 2013-9-3 18:56:03

kelp 发表于 2013-9-3 16:58 static/image/common/back.gif
echo "Content-type: text/html\n\n"
修改为echo "Content-type: text/html"试试

可以了,请问这是怎么回事啊!?好奇怪!

是不是跟我的shell类型有关啊,我的shell是sh

kelp 发表于 2013-9-3 18:59:11

yidehui 发表于 2013-9-3 18:56 static/image/common/back.gif
可以了,请问这是怎么回事啊!?好奇怪!

是不是跟我的shell类型有关啊,我的shell是sh ...

echo 自己会加上回车的。 你这个代码是从C中复制过来的,多了两个\n

yidehui 发表于 2013-9-3 19:04:34

kelp 发表于 2013-9-3 18:59 static/image/common/back.gif
echo 自己会加上回车的。 你这个代码是从C中复制过来的,多了两个\n

还有一个问题,我的2440的shell只有sh,能不能直接到虚拟机上linux的/bin/目录下把bash拷贝出来到2440的/bin/目录下,让2440多一种shell?

omityoung 发表于 2013-9-4 10:51:46

yidehui 发表于 2013-9-3 19:04 static/image/common/back.gif
还有一个问题,我的2440的shell只有sh,能不能直接到虚拟机上linux的/bin/目录下把bash拷贝出来到2440的/ ...

不行,虚拟机上的bash应该是86的可执行文件,而2440是arm的,构架不一样

yidehui 发表于 2013-9-4 13:26:15

omityoung 发表于 2013-9-4 10:51 static/image/common/back.gif
不行,虚拟机上的bash应该是86的可执行文件,而2440是arm的,构架不一样

关于cgi程序在网页上的应用,我有一点不理解,有些变量如date,在shell脚本中使用$(date) ,网页上会打印出时间;

但是我在sh脚本中写上ifconfig,或者$(ifconfig)之类写法却无法打印出相应信息在网页上?

下面是我的sh脚本:我应该如何修改.

#!/bin/sh

echo -e "Content-type:text/html"
echo ""

echo "<li>System:         "$(uname -a)
echo "<li>Time:   "$(date)
echo " "ifconfig | sed -ne 's/ *inet addr:\(\{1,3\}\.\{1,3\}\.\{1,3\}\) *B.*/Your IP is:\1/p'            

/*最后一行在2440上运行显示Your IP is 192.168.0.200*/
页: [1]
查看完整版本: 关于linux的BOA,跪求大家一定要帮忙!!!!!!