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]