ajax + shell + perl +CGI 脚本

元气小坏坏 提交于 2020-08-13 18:40:07

 


感谢越来越好
https://blog.csdn.net/weixin_42476601/article/details/84801610

$.ajax({
url:"/getData.do"
})
请求的路径是:http://localhost:8080/getData.do


 

 

 

感谢 Seda Özses 使用 Perl、jQuery、Ajax、JSON 和 MySQL 实现简单的登录
https://www.ibm.com/developerworks/cn/webservices/ws-simplelogin/index.html


感谢jQuery之Ajax调试听语音
abc900223

https://jingyan.baidu.com/article/da1091fb3bfc85027849d61e.html


感谢shell脚本--初识CGI
寻觅beyond
https://www.cnblogs.com/-beyond/p/8564108.html


感谢 cgi+perl+ajax初探
hydah
https://www.cnblogs.com/hydah/archive/2011/10/25/cgi-javascript-ajax.html

 

 

shell脚本--初识CGI

 

  CGI按照百度百科的定义,如下:

  CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、VB 和Delphi 等。CGI 分为标准CGI 和间接CGI两种。标准CGI 使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI 又称缓冲CGI,在CGI 程序和CGI 接口之间插入一个缓冲程序,缓冲程序与CGI 接口间用标准输入输出进行通信。
  
  上面这一段话第一次接触cgi,可能不懂到底什么意思,下面举一个例子方便理解。
  以Apache为例,在配置文件httpd.conf中搜索cgi关键字,下面是主要的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
<IfModule alias_module>
     ScriptAlias  /cgi-bin/  "/usr/local/apache/cgi-bin/"
< /IfModule >
 
<IfModule cgid_module>
     #Scriptsock cgisock
< /IfModule >
 
<Directory  "/usr/local/apache/cgi-bin" >
     AllowOverride All
     Options None
     Require all granted
< /Directory >

  进入Apache下面的cgi-bin目录,创建一个文件,文件名为index.cgi,文件扩展名为.cgi,这个和php文件的扩展名是.php是一样的。

  index.cgi的内容如下:

1
2
3
4
5
6
7
#!/bin/bash
#index.cgi
 
echo  "Content-Type:text/html;charset=utf-8"
echo
 
echo  "hello world"

  然后在浏览器中访问localhost/cgi-bin/index.cgi,你就会看到结果如下:

 

  然后将index.cgi的内容改一下:

1
2
3
4
5
6
7
8
9
#!/bin/bash
#index.cgi
 
echo  "Content-Type:text/html;charset=utf-8"
echo
 
mysql= "mysql -uroot -proot"
sql= "show databases"
$mysql -e  "$sql"

  浏览器运行如下:

  

  其实,从上面的例子中,你就会得出一点结论,cgi就和php类似,只不过php文件中使用的使用php的语法,cgi中使用的shell命令,但是,都可以通过浏览器来运行脚本,获得结果。

  现在看一下CGI的定义:CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。

  是不是有点理解了。

 

 ################

 

 

hydah

 

cgi+perl+ajax初探

   本来任务要求的是用perl实现cgi脚本即可。但是普通的方法都会刷新页面。我想要的结果是不刷新页面,在原页面上进行交互。即通过cgi返回的信息可以作为原网页的部分内容。所以这需要用到ajax。

  很遗憾,在网上没有多少相关的资料。而且手边的教科书上没有说到perl和ajax的结合运用。自己胡乱摸索了一下,已经成功实现不离开页面将信息传给服务器端的cgi脚本,并将服务器端传回来的反馈信息得到,通过javascript动态改变页面内容。但是一个头疼的问题是,通过innerHTML改变div的内容后,页面会自动刷新。使得反馈信息在原页面上一闪而过。没有解决。懒得弄得了。暂时吧源码贴在这。
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<script type= "text/javascript" >
 
     function  loadXMLDoc()
 
     {
 
     var  xmlhttp;
 
     if  (window.XMLHttpRequest)
 
      { // code for IE7+, Firefox, Chrome, Opera, Safari
 
      xmlhttp= new  XMLHttpRequest();
 
      }
 
     else
 
      { // code for IE6, IE5
 
      xmlhttp= new  ActiveXObject( "Microsoft.XMLHTTP" );
 
      }
 
      var  url= "" ;
 
      var  name=document.getElementsByName( "name" )[0].value;
 
      var  age=document.getElementsByName( "age" )[0].value;
 
      var  gender=document.getElementsByName( "gender" )[0].value;
 
      var  email=document.getElementsByName( "email" )[0].value;
 
      url= "?name=" +name+ "&age=" +age+ "&gender=" +gender+ "&email=" +email;
 
      alert(url);
 
     xmlhttp.open( "GET" , "http://www.cnblogs.com/cgi-bin/infoQuesAdd1.pl" +url, false );
 
     xmlhttp.send( null );
 
     //document.getElementById("displayboard").innerHTML=xmlhttp.responseText;
 
     alert(xmlhttp.responseText);
 
     }
 
</script>

 


  通过ajax对象将获得的信息通过GET方法传到服务器端。服务器端通过perl脚本的param函数分析参数并作相应处理,且做出反馈。反馈信息由xmlhttp.responseText得到。

 
 
 
##部署 Wash 遇到的问题


1.in oracle user :we running the web program in bash to collect file

sh cash.sh db dbfcs11 58.2.101.168 1528 fcs


2.in web

部署方法:$ cd /var/www/html/doc
-》html 目录部署在 /var/www/html/doc
$ # copy the tar.gz file from github here
$ gzip -d khailey-wash-155931c.tar.gz # name generated for github download
$ tar xvf khailey-wash-155931c.tar
$ mv khailey-wash-155931c/* .





change1:

edit cgi-bin/json_ash.sh
add:
my $MON_HOME="/tmp/MONITOR";


change2:

# 因为AJAX 需要跑的CGI 脚本 ,CGI 在 httpd.conf 配置信息如下:
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
-》CGI 部署位置/var/www/cgi-bin/

所以需要迁移文件
move all file in /var/www/html/doc/cgi-bin to /var/www/cgi-bin/


then use test command 确定能否返回数据:


http://10.200.210.187/cgi-bin/json_ash.sh (OK)

http://10.200.210.187/cgi-bin/json_ash.sh?points=60&vdb=58.2.101.168:fcs&type=0 (OK)

 


总结:如果

如果查不到数据:IE 界面 最下面 如下
debug data:
http://10.200.210.187/doc/html/ash.html?q=58.2.101.168:fcs 58.2.101.168:fcs z errorstart errorend /cgi-bin/json_ash.sh?points=60&vdb=58.2.101.168:fcs&type=0 complete


如果查得到数据,IE 界面 最下面 如下:
/cgi-bin/json_ash.sh?points=60&vdb=58.2.101.168:fcs&type=db,M000 102 complete

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!