shell中curl的使用

 http://blog.sina.com.cn/s/blog_6c963df701019fbb.html
curl -I url
取得url的头部信息
curl -I url -s | grep "200 OK"
判断页面是否可以打开的
curl url -d "username=test&age=29"
向url传送数据
wget发送数据
[test@06_09 pic]$ wget --post-data "username=testiyu"  http://www.xiaoqu51.com/images/pic/test.php -O wget.html
curl上传文件
[test@06_09 pic]$ curl -T ./test.php ftp://test:123456@127.0.0.1
curl可以在shell下轻松上传下载ftp上的文件,相比ftp命令更具有优势,因为它能在单命令条件下,下载或者上传一个ftp文件,甚至可以删除文件。
下面看实例:
列出ftp服务器上的目录列表:
curl ftp://malu.me/ --user name:passwd
curl ftp://malu.me/ –u name:passwd    #简洁写法
curl ftp://name:passwd@malu.me     #简洁写法2
只列出目录,不显示进度条
curl ftp://malu.me –u name:passwd -s
下载一个文件:
curl ftp://malu.me/size.zip –u name:passwd -o size.zip
上载一个文件:
curl –u name:passwd -T size.mp3 ftp://malu.me/mp3/
从服务器上删除文件(使用curl传递ftp协议的DELE命令):
curl –u name:passwd ftp://malu.me/ -X 'DELE mp3/size.mp3'
另外curl不支持递归下载,不过可以用数组方式下载文件,比如我们要下载1-10.gif连续命名的文件:
curl –u name:passwd ftp://malu.me/img/[1-10].gif –O    #O字母大写
要连续下载多个文件:
curl –u name:passwd ftp://malu.me/img/[one,two,three].jpg –O #O字母大写
1
shell之curl用法笔记
(2012-11-21 17:48:03)
转载▼
标签:
linux
shell
it
分类: LAMP
基本用法(配合sed/awk/grep)
$curl http: //bpsky.net
 
下载保存
$curl http://bpsky.net > index.html
$curl -o index.html http://bpsky.net
$curl -O http://bpsky.net/target.tar.gz
 
通过代理
$curl -x  123.45 . 67.89 : 1080  -o page.html http://bpsky.net
 
保存cookie
$curl -x  123.45 . 67.89 : 1080  -o page1.html -D cookie0001.txt http://bpsky.net
 
使用cookie
$curl -x  123.45 . 67.89 : 1080  -o page1.html -D cookie0002.txt -b cookie0001.txt http://bpsky.net
 
模仿浏览器
$curl -A  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"  -x  123.45 . 67.89 : 1080  -o page.html -D cookie0001.txt http://bpsky.net
 
伪造referer
$curl -A  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"  -x  123.45 . 67.89 : 1080  -e  "mail.yahoo.com"  -o page.html -D cookie0001.txt http://bpsky.net
 
循环下载
$curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG
 
循环(匹配)下载
$curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG  # >like zzh/001.JPG
 
循环(引用)下载
$curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG # like >001_zzh.jpg
 
断点续传
$curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG
$curl -r  0 - 10240  -o  "zhao.part1"  http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
$curl -r 10241 - 20480  -o  "zhao.part1"  http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
$curl -r 20481 - 40960  -o  "zhao.part1"  http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
$curl -r 40961 - -o  "zhao.part1"  http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3
...
$cat zhao.part* > zhao.mp3
 
GET 上传
$curl http://www.yahoo.com/login.cgi?user=nickwolfe&password=12345
 
POST 上传
$curl -d "user=nickwolfe&password=12345" http://www.yahoo.com/login.cgi
 
POST 文件上传
$curl -F upload= $localfile  -F $btn_name=$btn_value http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi 

pic.php

<form method="POST" enctype="multipart/form-data" action="http://www.phpjx.com/upload.php">
<input type=file name=userfile>
<input type=submit name=press value="OK">
</form>

curl上传文件实例:   

本地文件article.php

[yansiyu@localhost models]$ curl --form userfile=@article.php --form press=OK http://www.phpjx.com/upload.php

或者

[yansiyu@localhost models]$ curl -F userfile=@article.php -F press=OK http://www.phpjx.com/upload.php

upload.php

  1 <?php
  2 print_r($_FILES);
  3 $tmp_name=$_FILES["userfile"]["tmp_name"];
  4 $file_name=$_FILES["userfile"]["name"];
  5 echo "<br>";
  6 $pathinfo=pathinfo($file_name,PATHINFO_EXTENSION);
  7 $extension=$pathinfo["extension"];
  8 echo($extension)."<br>";
  9 $newname=date("YmdHis").".".$extension;
 10 move_uploaded_file($_FILES["userfile"]["tmp_name"],"/var/www/html/upload/".$newname) ;

  curl是一个访问url的工具,可以用他构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。当然curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。本文只探讨其强大的HTTP功能。
 
通用语法:
 
curl [option] [URL...]
 
在处理URL的时候其支持类型于SHELL的名称扩展功能,如http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL
 
下面介绍选项功能:
 
不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
 
-o out  将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件
 
-O  按服务器上的名称保存下载的文件
 
-r/--range  from-to 下载指定range内的数据
 
-C 在保存文件时进行续传
 
-A/--user-agent  <ua>  指定发送请求的用户代理 如 curl -A My-Agent/1.0.0 www.apple.com 
 
-x  ip:port 指定使用的http代理,如curl -x 192.168.1.1:8080 www.apple.com
 
-D head.txt  将服务器的返回的header保存为文件,头部的cookie也可被保存   curl -D header.txt www.apple.com
 
-c <file> 保存服务器的cookie文件
 
-b/--cookie  <name=data>   向服务器提交cookie,若无=则name视为文件名  curl -b cookie.txt www.apple.com
 
-e url  设置引用头的值
 
-T localfile  向服务器PUT文件 如curl -T 1.mp3  www.apple.com/upload.php
 
-d <key=value>  向服务器POST表单数据 如curl -d "order=111&count=2" http://www.apple.com/buy
 
-F <key=value> 向服务器POST表单 curl -F "web=@index.html;type=text/html" url.com
 
如果希望从本地文件中获取表单数据,则在文件名前加@ 如 curl -d @data.xml http://www.apple.com
 
若希望从标准输入获取则用curl -d - http://www.apple.com
 
-E cert.pem  指定本地证书
 
-H <header:value>  为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.apple.com
 
-I  构造一个HEAD请求
 
-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
 
--compressed 采用压缩方式接收返回数据
 
--connect-timeout <s> 设置超时时间
 
-v 详细输出,包含请求和响应的首部
 
--retry num
 
--retry timeo 指定重试的次数和间隔
 
--tcp-nodelay 打开TCP_NODELAY选项  不进行捎带确认
 
环境 变量:http_proxy [protocol://]<host>[:port]

 
    A+
发布日期:2013年12月23日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: