Linux curl命令实例

用途说明
curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类似的工具还有wget。
curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。

常用参数:
    curl命令参数很多,这里只列出我曾经用过、特别是在shell脚本中用到过的那些。
-A:随意指定自己这次访问所宣称的自己的浏览器信息
-b/--cookie  cookie字符串或文件读取位置,使用option来把上次的cookie信息追加到http request里面去。
-c/--cookie-jar  操作结束后把cookie写入到这个文件中
-C/--continue-at   断点续转
-d/--data    HTTP POST方式传送数据
-D/--dump-header  把header信息写入到该文件中
-F/--form  模拟http表单提交数据
-v/--verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。
-m/--max-time  指定处理的最大时长
-H/--header 
指定请求头参数 -s/--slient 减少输出的信息,比如进度 --connect-timeout 指定尝试连接的最大时长 -x/--proxy :port]> 指定代理服务器地址和端口,端口默认为1080 -T/--upload-file 指定上传文件路径 -o/--output 指定输出文件名称 --retry 指定重试次数 -e/--referer <URL> 指定引用地址 -I/--head 仅返回头部信息,使用HEAD请求 -u/--user :password]>设置服务器的用户和密码 -O:按照服务器上的文件名,自动存在本地 -r/--range 检索来自HTTP/1.1FTP服务器字节范围 -T/--upload-file 上传文件

工作中有一个添加优惠券的功能,接口是post提交一个Form表单,需要填写一些参数,并上传一个Excel。有同事用Python实现了一个小脚本,执行下就可以添加优惠券,挺实用,但我对Python还处于学习阶段,shell脚本倒是学了一点,发现curl也能实现post请求,觉得可以实验一把,庆幸的是还成功了。
使用优惠券接口前需要先进行登录,所以先将登录的cookie保存到本地文件,然后优惠券接口请求的时候带上cookie,请求完毕后登退出登录。

##  -s 不输出进度信息
##  -c 保存cookies到文件
##  -b 使用cookies,从文件中读取
##  -d post传递数据
##  -F 模拟表单提交,可多次使用,一次添加一个参数
##  -o 输出结果到文件

#1.首先登录
curl -s -c cookies.txt -d "username=admin1&password=123456" http://IP:PORT/login
#2.优惠券接口
curl -s -b cookies.txt -o result.txt -F phone="13800000000" -F password="123456"  -F file=@/data/x.xls http://IP:PORT/import/addCoupon
#3.退出登录
curl -s -b cookies.txt http://IP:PORT/logout
最后贴出自己写的一个简单的脚本:
#!/bin/bash
IP=XXX.XXX.XXX.XXX
PORT=80
login(){
curl -s -c cookies.txt -d "username=admin&password=1234567890" http://IP:PORT/login
echo ""
}
add(){
curl -s -b cookies.txt -o result.txt -F phone="13800000000" -F password="123456"  -F file=@/data/x.xls http://IP:PORT/import/addCoupon
}
logout(){
curl -s -b cookies.txt http://IP:PORT/logout
}

login
if [ $? -eq 0 ]; then
    add
    if [ $? -eq 0 ];then   
        cat result.txt  | while read line
            do
                echo $line
            done
    else
        echo "excute failed"
        logout
        exit 0
    fi
else
    echo "excute failed"
    logout
    exit 0
fi
logout
echo ""
echo "excute success"

你可能感兴趣的:(shell实践,linux,curl,shell,post,接口)