使用Python CGI实现服务器展现数据的API接口

简介:
+关注继续查看

001438516.gif

CGI脚本简单地讲是个运行在Web服务器上的程序, 有浏览器的输入触发. 这个脚本通常象服务器和系统中其他程序如数据库的桥梁。

CGI 脚本难道不是一个真正的脚本?按照你的服务器的支持, 他们可能是一个编译好的程序或者批命令文件或者其他可执行的东西. 为了简单起见,我们统称他们为脚本scripts.  


一个URL指向一个CGI脚本. 一个CGI脚本的URL能如普通的URL一样在任何地方出现。

服务器接收请求, 按照那个URL指向的脚本文件(注意文件的位置和扩展名),执行脚本.

脚本执行基于输入数据的操作,包括查询数据库、计算数值或调用系统中其他程序.

脚本产生某种Web服务器能理解的输出结果.

服务器接收来自脚本的输出并且把它传回浏览器,让用户了解结果。


我们具体能用CGI做些什么:  我在这里举个例子吧


1
2
3
1   比如我们服务端想获取客户端的一些个性能参数
2   可以在页面操作管理linux主机
3   我们可以用他来做后端,处理数据,并return回去


cgi相当的全,可以抓取http的数据,比如用户的ip地址,用户的请求的模式,数据包的大小等等~


步骤:


1
2
3
4
5
6
7
8
9
10
打开apache配置文件http.conf,进行如下修改:
1)LoadModule python_module modules/mod_python.so
2
<Directory "/var/www/cgi-bin">
            Options +ExecCGI +FollowSymLinks
            AllowOverride All
            Order allow,deny
            Allow from all
</Directory>
(3)   增加 AddHandler cgi-script .py .sh


我们能马上就实现的~


这个是把shell脚本当成CGI


000825308.jpg


这个是以python的方式运行这个CGI


000916688.jpg

这个是GET数据

001309712.jpg



sh做CGI的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
echo -e "Content-type: text/html;charset=utf-8\n\n"
echo CGI/1.0 test script report:$(uuidgen)'<br>'
echo argc is $#. argv is "$*".'<br>'
echo SERVER_SOFTWARE = $SERVER_SOFTWARE '<br>'
echo SERVER_NAME = $SERVER_NAME '<br>'
echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE '<br>'
echo SERVER_PROTOCOL = $SERVER_PROTOCOL '<br>'
echo SERVER_PORT = $SERVER_PORT '<br>'
echo REQUEST_METHOD = $REQUEST_METHOD '<br>'
echo HTTP_ACCEPT = "$HTTP_ACCEPT" '<br>'
echo PATH_INFO = "$PATH_INFO" '<br>'
echo PATH_TRANSLATED = "$PATH_TRANSLATED" '<br>'
echo SCRIPT_NAME = "$SCRIPT_NAME" '<br>'
echo QUERY_STRING = "$QUERY_STRING" '<br>'
echo REMOTE_HOST = $REMOTE_HOST '<br>'
echo REMOTE_ADDR = $REMOTE_ADDR '<br>'
echo REMOTE_USER = $REMOTE_USER '<br>'
echo AUTH_TYPE = $AUTH_TYPE '<br>'
echo CONTENT_TYPE = $CONTENT_TYPE '<br>'
echo CONTENT_LENGTH = $CONTENT_LENGTH
echo '11111111111111'
echo $(dir)
echo $(ifconfig)




python做CGI的脚本!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
print "Content-type: text/html;charset=utf-8\n\n"
print "<center>hello world</center>"
print "<pre>"
a=os.popen('free').read()
print a
print "</pre>"
print "<pre>"
a=os.popen('uptime').read()
print a
print "</pre>"
print "<pre>"
a=os.popen('df -HT').read()
print a
print "</pre>"
print "<pre>"
a=os.popen('netstat -an|grep ES').read()
print a
print "</pre>"


get的方式传递参数


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
first_name = form.getvalue('first_name')
last_name  = form.getvalue('last_name')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"




可以用 /cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI  进行测试~

简单写个HTML页面 ,action指向到CGI的地址上


1
2
3
4
5
<formaction="/cgi-bin/hello_get.py"method="get">
First Name: <inputtype="text"name="first_name"><br/>
Last Name: <inputtype="text"name="last_name"/>
<inputtype="submit"value="Submit"/>
</form>



我们在来实现文件的上传~

这个一个简单的页面~


1
2
3
4
5
6
7
8
9
<html>
<body>
<formenctype="multipart/form-data"
action="save_file.py"method="post">
<p>File: <inputtype="file"name="filename"/></p>
<p><inputtype="submit"value="Upload"/></p>
</form>
</body>
</html>


后端是~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/python
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
# Get filename here.
fileitem = form['filename']
# Test if the file was uploaded
if fileitem.filename:
   # strip leading path from file name to avoid
   # directory traversal attacks
fn = os.path.basename(fileitem.filename)
   open('/tmp/' + fn, 'wb').write(fileitem.file.read())
message = 'The file "' + fn + '" was uploaded successfully'
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html>
<body>
<p>%s</p>
</body>
</html>
""" % (message,)


用cgi实现url的redirect跳转 !

1
2
3
4
5
6
#!/usr/bin/env python
import cgi
url = "http://example.com/"
print "Status: 302 Moved"
print "Location: %s" % url
print

cgi和apache,nginx等web服务器一块用,很爽的~



 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1196090,如需转载请自行联系原作者



相关文章
|
14天前
|
JSON JavaScript 前端开发
使用商品详情API接口获取商品数据
在电子商务领域,商品详情API接口是一种常用的工具,用于从服务器获取特定商品的详细信息。通过使用这些API接口,开发人员可以轻松地获取商品的名称、价格、描述、图片等数据,从而为用户提供更好的购物体验。本文将详细介绍如何使用商品详情API接口来获取想要的商品数据,并提供相关的代码示例。
|
15天前
|
数据可视化 API 数据处理
使用Python调用API接口获取京东关键词详情数据
在电商领域,获取关键词的详情数据对于产品分析、市场研究等方面具有重要意义。京东作为中国最大的电商平台之一,提供了丰富的API接口供开发者使用。本文将详细介绍如何使用Python调用京东的API接口获取关键词详情数据,并给出相应的代码实现
|
21天前
|
运维 数据可视化 API
利用标签平台创建群组并通过API查询群组数据
Dataphin的标签平台提供了 丰富强大的标签加工能力,支持多种类型标签开发,包括离线、实时等标签可视化加工。基于离线视图、实时视图、行为关系,可通过配置化的方式构建属性类、统计类标签、偏好类标签,以及与已有的标签创建衍生组合标签。通过构建及管理标签,形成良好的标签资产,可供上层的应用及业务系统使用。本文将介绍如何通过Dataphin OpenAPI圈选群组以及群组分页查询服务,让应用系统集成标签平台的标签及群组加工能力,进行群组的圈选、分析及投放。
|
22天前
|
数据挖掘 API 开发者
如何使用Python调用API接口获取淘宝商品数据
随着互联网的发展,API接口已经成为了不同软件、平台之间数据传输的标配。淘宝作为中国最大的电商平台,提供了丰富的API接口供开发者使用。通过调用这些接口,我们可以轻松地获取淘宝的商品数据,为数据分析、学术研究、商业应用等场景提供数据支持。
|
22天前
|
API 数据安全/隐私保护 开发者
使用Python调用API接口获取淘宝商品数据
要使用Python调用淘宝的API接口获取商品数据,你可以使用淘宝开放平台提供的API接口。下面是一个简单的示例代码,演示如何使用Python调用淘宝API接口获取商品数据。
|
25天前
|
小程序 JavaScript API
小程序云开发实战五:如何将获取到的API数据存入云数据库里面
小程序云开发实战五:如何将获取到的API数据存入云数据库里面
22 0
|
25天前
|
小程序 前端开发 API
小程序云开发实战四:调用豆瓣API获取具体的数据
小程序云开发实战四:调用豆瓣API获取具体的数据
21 0
|
25天前
|
JSON API 数据处理
使用Python调用API接口获取拼多多商品数据:一篇详细说明文章
拼多多是中国著名的电商平台之一,提供了丰富的商品信息和购物服务。为了更好地利用拼多多的数据资源,我们可以使用Python编程语言调用拼多多的API接口,获取商品数据并进行处理和分析。本文将详细介绍如何使用Python完成这一任务,包括API的基本概念、接口调用流程、代码实现和数据处理等方面的内容。
|
26天前
|
机器学习/深度学习 JSON 数据挖掘
使用Python调用API接口获取淘宝商品数据
本文介绍了如何使用Python调用API接口获取淘宝商品数据。通过调用淘宝开放平台的API接口,我们可以获取到淘宝商品的详细信息,包括商品名称、价格、销量等。这些数据可以用于进行各种分析,例如商品的价格趋势、销量趋势等。通过Python的强大功能,我们可以更方便地获取和处理这些数据,从而更好地理解淘宝的商品市场。
|
26天前
|
JSON API 数据处理
调用API接口获取淘宝商品数据:实践指南与代码解析
本文将详细介绍如何使用Python编程语言调用淘宝API接口获取商品数据。我们将从API的基本概念开始,然后逐步深入到具体的实践环节,通过实例代码演示如何获取淘宝商品数据,并进行简单的数据处理与分析。
热门文章
最新文章
相关产品
云迁移中心
推荐文章
更多