您的位置:首页 > 运维架构 > Shell

使用shell脚本编写cgi

2015-02-11 14:47 981 查看
非常简单

示例1:recv脚本接收http post数据

#!/bin/sh

read buf

echo "Content-type:text/html;charset=UTF-8"
echo

echo $buf


使用curl命令进行测试:

curl --data "name=abc" http://10.236.5.128/cgi-bin/recv
抓包得到http消息如下:

POST /cgi-bin/recv HTTP/1.1
User-Agent: curl/7.19.7 (i386-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: 10.236.5.128
Accept: */*
Content-Length: 8
Content-Type: application/x-www-form-urlencoded

name=abc

HTTP/1.1 200 OK
Date: Wed, 11 Feb 2015 06:43:29 GMT
Server: Apache/2.2.15 (CentOS)
Content-Length: 9
Connection: close
Content-Type: text/html;charset=UTF-8

name=abc

示例2:接收http post上传文件

#!/bin/sh

while read buf
do
echo $buf >> data
done

echo
使用curl命令进行测试:

curl -F password=@/etc/passwd http://10.236.5.128/cgi-bin/backup
抓包得到http消息如下:

POST /cgi-bin/backup HTTP/1.1
User-Agent: curl/7.19.7 (i386-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: 10.236.5.128
Accept: */*
Content-Length: 2136
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------ebae583d2488

HTTP/1.1 100 Continue

------------------------------ebae583d2488
Content-Disposition: form-data; name="password"; filename="passwd"
Content-Type: application/octet-stream

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
pulse:x:498:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
saslauth:x:497:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tony:x:500:500:LinuxServer:/home/tony:/bin/bash
ldap:x:55:55:LDAP User:/var/lib/ldap:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
jenkins:x:496:493:Jenkins Continuous Build server:/var/lib/jenkins:/bin/false
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

------------------------------ebae583d2488--

HTTP/1.1 200 OK
Date: Thu, 12 Feb 2015 02:11:28 GMT
Server: Apache/2.2.15 (CentOS)
Content-Length: 0
Connection: close
Content-Type: text/plain; charset=UTF-8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cgi shell