$7.49 .com domain with free InstantPage Website Builder$1.99 Web Hosting   捷飞网络官方淘宝店   Godaddy 优惠码
返回列表 发帖
分享到:




[应用&技术] 分享linux curl 命令参数详解,以及操作实例

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。
$ s9 h0 d* n. [# E: j
/ f0 w4 m' ^+ m0 C8 h2 |2 f7 P/ ?! v0 W* |$ J, j1 A

' Q4 H$ h% K- ?- n/ I! B3 l; |# C! u6 c! z; P7 r
一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。/ K+ B1 c0 S2 M( C& E- I9 ]
' r7 \- x2 Z% }/ c0 W! |( S! D% E
1 I0 X4 w* f4 S2 |1 s) T
-a/--append 上传文件时,附加到目标文件. h1 @2 C0 n- ?' Y8 R1 z8 S% B9 N7 d
-A/--user-agent <string>  设置用户代理发送给服务器; V/ k$ i: J4 h
- anyauth   可以使用“任何”身份验证方法  d2 Y0 ^/ d9 L' N6 X
-b/--cookie <name=string/file> cookie字符串或文件读取位置+ H2 Y: I* \# F
- basic 使用HTTP基本验证
, k  V4 z& [8 W% X" o; j -B/--use-ascii 使用ASCII /文本传输0 z$ X5 o2 P/ I" i8 I, b+ v
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中) b- {6 T$ O1 V2 {5 R
-C/--continue-at <offset>  断点续转2 E, q9 {* h: B3 u* X3 s
-d/--data <data>   HTTP POST方式传送数据+ |, `) Z* G3 F, K
--data-ascii <data>  以ascii的方式post数据% O# v7 J0 I9 i# a* R
--data-binary <data> 以二进制的方式post数据
! W' x8 d( V% b5 |- `/ @ --negotiate     使用HTTP身份验证1 M* ?5 W) J" b: H% u
--digest        使用数字身份验证
  g5 z1 _3 c, x8 E0 O+ U8 t# d' p --disable-eprt  禁止使用EPRT或LPRT* D  Y# @+ |# ]0 R8 G. ^# G3 Z. x
--disable-epsv  禁止使用EPSV) g, `, b/ X/ N: R) D% s
-D/--dump-header <file> 把header信息写入到该文件中4 v) \6 ?; r" A- y. a
--egd-file <file> 为随机数据(SSL)设置EGD socket路径
8 ~1 L9 p4 r" E  J1 X --tcp-nodelay   使用TCP_NODELAY选项% ]! @1 N# V- T" C4 C# e
-e/--referer 来源网址
  O" E" \. r4 Y3 W# }2 r -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
2 \& k( E* G1 Y" {3 R/ C# Q --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
, _/ o* d% Z' s* d" \1 X1 B/ L --key <key>     私钥文件名 (SSL)
- f1 T& u. S! _1 ^7 @7 F --key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)3 ^  h  b6 g* ]. m
--pass  <pass>  私钥密码 (SSL)' H- T/ B4 V! W: }
--engine <eng>  加密引擎使用 (SSL). "--engine list" for list+ N# Y3 f2 E" j# ?9 `( {8 ^
--cacert <file> CA证书 (SSL)
2 J, z5 D  Z& `1 Y --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
+ |; o0 Y  l5 N: e+ O; J --ciphers <list>  SSL密码
* B) D, G% g: n  A0 v! Q+ L --compressed    要求返回是压缩的形势 (using deflate or gzip); G% a% o# I2 `8 U& w" L, G
--connect-timeout <seconds> 设置最大请求时间7 b! M" s% G6 u4 K! L  M( h; z
--create-dirs   建立本地目录的目录层次结构
4 x/ L. m) {* g1 Z( ^  T --crlf          上传是把LF转变成CRLF
0 P* J+ e0 I; I) Z -f/--fail          连接失败时不显示http错误' F% y7 |# f+ F* v% \/ V$ m
--ftp-create-dirs 如果远程目录不存在,创建远程目录4 O2 K8 T- ~% Y! S) E. u
--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用: r7 |# L' v6 k/ z7 b0 a7 f7 I
--ftp-pasv      使用 PASV/EPSV 代替端口
/ Y# d' h2 I1 M& d. Q4 g# ^ --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
6 e. b7 Y4 h; w9 v --ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输
4 ^, J- P) A; Q --ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输
8 l3 P$ J7 a3 O% W -F/--form <name=content> 模拟http表单提交数据$ O1 o: c2 T- ]+ ^$ E
-form-string <name=string> 模拟http表单提交数据
9 j: Q& o* R" d2 L/ p! B' } -g/--globoff 禁用网址序列和范围使用{}和[]6 @, o* b: J$ o2 {6 n9 n
-G/--get 以get的方式来发送数据
) |" H7 G! N, \- N( O -h/--help 帮助. a0 A  I' {1 w, y" P7 ?
-H/--header <line>自定义头信息传递给服务器% T9 |: G1 X/ W6 w7 t* P7 }: S
--ignore-content-length  忽略的HTTP头信息的长度4 O/ c! K* N% }* I% j; q5 Q4 B
-i/--include 输出时包括protocol头信息
/ w$ \# D/ Q6 M, N3 m -I/--head  只显示文档信息
1 ^0 r7 b) s. N 从文件中读取-j/--junk-session-cookies忽略会话Cookie
, w# p6 Y# q0 R0 b - 界面<interface>指定网络接口/地址使用
, j" x( q$ u: V( S$ s7 Z% G - krb4 <级别>启用与指定的安全级别krb4
& ?5 x1 P: T! H/ Z* Y$ h -j/--junk-session-cookies 读取文件进忽略session cookie2 J8 y5 h; `1 a: o% ^  [  y
--interface <interface> 使用指定网络接口/地址( Z* Y) q1 o1 B! f0 S1 ]
--krb4 <level>  使用指定安全级别的krb4
% S. q+ h0 p! _! H3 C* h -k/--insecure 允许不使用证书到SSL站点/ t3 b9 U6 X- [3 [3 @
-K/--config  指定的配置文件读取, M5 ~0 s  I+ n) U1 M9 N& I: J3 q( ~
-l/--list-only 列出ftp目录下的文件名称8 O2 `9 C9 f7 @) e
--limit-rate <rate> 设置传输速度1 q+ R5 r. H0 l+ i) i+ Z
--local-port<NUM> 强制使用本地端口号5 n, O8 |6 u! A- M' a
-m/--max-time <seconds> 设置最大传输时间) q4 V. ?7 \2 O$ |
--max-redirs <num> 设置最大读取的目录数
9 \- s9 r. {  V6 D- r* Q --max-filesize <bytes> 设置最大下载的文件总量) u- W! X6 V3 D1 V
-M/--manual  显示全手动
2 f  o: j6 {. p -n/--netrc 从netrc文件中读取用户名和密码  F/ E3 M6 A2 d2 C) z. `
--netrc-optional 使用 .netrc 或者 URL来覆盖-n" q4 Y4 F* |( u( b( J: N
--ntlm          使用 HTTP NTLM 身份验证* {; ^& `4 Q4 T" D7 n" s/ p- J
-N/--no-buffer 禁用缓冲输出
5 }2 ?* N' t* @ -o/--output 把输出写到该文件中  J7 e$ d1 ]7 |* m, _
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名4 j( G# q. N4 `7 z
-p/--proxytunnel   使用HTTP代理4 \; c/ A+ T& i6 r. B+ a
--proxy-anyauth 选择任一代理身份验证方法5 a1 q& k) }2 }. V2 G7 Z! v7 @  ]' Z
--proxy-basic   在代理上使用基本身份验证
! V/ Q, u6 ^  b+ S --proxy-digest  在代理上使用数字身份验证
3 R9 _5 U3 C* f5 J4 c; _  P: w% E. s4 K --proxy-ntlm    在代理上使用ntlm身份验证
9 O" k- N6 t) I+ D -P/--ftp-port <address> 使用端口地址,而不是使用PASV7 G& d9 }  [! `& f
-Q/--quote <cmd>文件传输前,发送命令到服务器
  L4 N9 k7 ?+ \: G7 d* R/ k -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围
5 h; o2 M( [/ K* y --range-file 读取(SSL)的随机文件
" c3 `6 U* t2 z) x0 t  K -R/--remote-time   在本地生成文件时,保留远程文件时间$ }: ]0 O: g7 e/ u! @% E
--retry <num>   传输出现问题时,重试的次数# j4 M( |9 n, H/ y) K
--retry-delay <seconds>  传输出现问题时,设置重试间隔时间* V: T8 L. N6 m) z; Y
--retry-max-time <seconds> 传输出现问题时,设置最大重试时间5 Y2 n: _/ Z; P8 n4 a
-s/--silent静音模式。不输出任何东西
: C" ~& S" N* f0 a7 s -S/--show-error   显示错误
  z  n% [! i9 \/ ]" U --socks4 <host[:port]> 用socks4代理给定主机和端口7 L" b- u) F' M& O
--socks5 <host[:port]> 用socks5代理给定主机和端口  z* G$ k. M$ d/ U6 e5 h
--stderr <file>! N7 K. b. E3 a: [) V
-t/--telnet-option <OPT=val> Telnet选项设置
2 b2 A9 v1 X- ~8 L; y --trace <file>  对指定文件进行debug
8 j' n; |! b; K+ W --trace-ascii <file> Like --跟踪但没有hex输出5 W- ~0 U7 V8 p0 ?/ ]; {
--trace-time    跟踪/详细输出时,添加时间戳' Y0 i) F# g) h- _. H2 y+ v+ M0 e1 I0 B
-T/--upload-file <file> 上传文件( b% n% n" _3 v
--url <URL>     Spet URL to work with
" R8 g) m# Z8 W8 r* i  Z1 M -u/--user <user[:password]>设置服务器的用户和密码; {% X. U& M5 `* ]
-U/--proxy-user <user[:password]>设置代理用户名和密码( p0 u, v& }6 k5 S) {4 Q
-v/--verbose
* a6 {7 ?9 }' ^, S! O -V/--version 显示版本信息
  l1 k: s+ w  @; \' s& \4 g -w/--write-out [format]什么输出完成后
( I/ m9 W- u2 A2 G -x/--proxy <host[:port]>在给定的端口上使用HTTP代理
1 [. g* X. L' l0 v- ? -X/--request <command>指定什么命令
3 h5 N( f6 k" I3 Q* K  {" _2 R -y/--speed-time 放弃限速所要的时间。默认为300 X+ o9 S0 t$ U9 o0 n- v
-Y/--speed-limit 停止传输速度的限制,速度时间'秒
6 ^7 r9 ~5 z8 i0 j -z/--time-cond  传送时间设置
0 m! X1 ~; P/ M* Z$ H' T/ ^ -0/--http1.0  使用HTTP 1.0
1 ~% ]  Z6 U, E; e: K) a9 E! }! J! O -1/--tlsv1  使用TLSv1(SSL)
. C  }+ y; D. a% L5 l -2/--sslv2 使用SSLv2的(SSL)
, x6 f1 l8 \3 Q% T- b; p9 q1 A -3/--sslv3         使用的SSLv3(SSL)
. V- r  r8 O( {8 f+ `4 z --3p-quote      like -Q for the source URL for 3rd party transfer8 T9 E* ^, U2 c2 p/ _
--3p-url        使用url,进行第三方传送+ f* I& b1 f! h4 z" o! E$ h
--3p-user       使用用户名和密码,进行第三方传送
" f: U5 f8 ?+ O. w -4/--ipv4   使用IP48 }# l  B& i1 b& w& [, C
-6/--ipv6   使用IP6
" B3 {0 S! y5 l2 n0 M/ C -#/--progress-bar 用进度条显示当前的传送状态( m5 d6 f' h+ W) W1 n2 \
二,常用curl实例
9 A- |% c! P. e, P* J
% n0 z7 ~: ]/ V3 M* I  l; _1 _5 y5 s
1,抓取页面内容到一个文件中: k! T9 c* O: P  n

& Z" h$ \0 X. q; [9 ^7 v8 X3 s6 ~- w( u  k" o  F* [
[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net- N! q: c% R/ ^8 w* D# N
2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西
6 Z, y" R6 o8 [8 N1 V
- Z0 s; L. K, i  P1 _/ |
0 {& [3 ^4 I$ D: D( J[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg+ ?; b4 E4 D4 N  {; X4 A
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg/ P  u6 o$ A) t  U9 L
3,模拟表单信息,模拟登录,保存cookie信息  H$ X( U& s& F, J9 b1 K# A
" a, _$ m3 z- c& {% w
/ a4 r! G4 L* m+ C
[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php  f: l. y6 h5 `. V, A; p8 c6 D; `1 A0 B
4,模拟表单信息,模拟登录,保存头信息
2 V  C: D" y# ^8 V' t/ f
, V( B& L- k! L; v8 [8 \: J' ?5 i/ `5 @: Z: C: |- a5 A  Q& k
[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php! W7 X( [# U9 G. U+ [/ s
-c(小写)产生的cookie和-D里面的cookie是不一样的。4 E1 Y8 C8 s0 E+ w# \
' s, u+ ~1 ?( D

! R4 }6 O0 J% i7 W8 @5,使用cookie文件
$ O* l" l5 b( p4 t
9 D# F( }9 n& a) @! }: p' x4 ]9 ?% H7 B% w# r2 r3 V( v
[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin: Z( c, R& U1 F2 i; @, }
6,断点续传,-C(大写的)2 o5 ^" [% z; J; f
6 F" X% K3 V+ m9 r" \4 f( w' [

  Z3 V" E1 U. q9 x/ B* {[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
* M! @+ P. `$ f. n1 s" @& l7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功1 ]* P+ b/ O9 Q1 i. Z
% t; V, f  k, t

" V: F5 C, B( o# p' E$ @. B6 b! i$ ?[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php9 O3 d# M: ^4 Q
8,显示抓取错误,下面这个例子,很清楚的表明了。
( d, t' D1 I3 X& z$ N0 a3 g6 U+ c( q; F
1 O& v+ s3 T+ X! c& f, }) J% e: B
[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf
4 ~: J' a( }5 z. j  F' lcurl: (22) The requested URL returned error: 404
! a& A+ s, Y" D+ k6 g! p[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf
2 `8 I/ m7 R% d$ ^+ x) v<HTML><HEAD><TITLE>404,not found</TITLE>( t/ a0 h# v5 @
。。。。。。。。。。。。& T$ w; ]% [1 Y  v5 s# j
9,伪造来源地址,有的网站会判断,请求来源地址。7 J5 j+ {! B/ i
# a- P5 e! B5 O" U  {0 [+ X
& V9 {# T% `- a  c+ @
[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php
- @, x2 A5 ]/ }0 H10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理9 w& i, D6 M% L  f
" \, N4 ~4 H, d  }
: F) ^6 Y0 C* `2 ]# F8 W  X$ [
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net
/ g  `# g2 C8 N$ }+ T$ R11,比较大的东西,我们可以分段下载
2 B/ P6 C( g3 e: |
4 \3 `0 F) d# \" X- l. M; p
$ o1 y& U: ?' [5 t5 d; f6 ^( A# h, Y9 D; F[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-( f5 K) S) n, Y9 z% ?8 m* O& }
content/uploads/2010/09/compare_varnish.jpg
* J9 @$ w! U6 Q) ^: y! L$ G8 h4 k+ s % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
7 }" A. r- C6 e8 P$ e' H Dload  Upload   Total   Spent    Left  Speed
/ y3 c. V4 T" i6 a- c- I9 F8 A100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     03 }- A3 S" w& [+ }: d2 k. _1 G
[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-
" w5 Q8 U' `+ |9 k. i, g$ vcontent/uploads/2010/09/compare_varnish.jpg
5 Q% w, \7 ?% I' w % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current( Y; L& ^5 E5 A, f, \: {5 Y
Dload  Upload   Total   Spent    Left  Speed, V* ~/ J1 t$ @9 i7 h# w
100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
5 o3 J, ~- F5 ]7 }/ n[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-: f2 V( z# b: ^% Q9 m" Q1 {+ R
content/uploads/2010/09/compare_varnish.jpg
  i9 u5 H" [" A3 T" X# ^3 p % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current7 ^4 v% r0 A+ F, e
Dload  Upload   Total   Spent    Left  Speed4 b( Y$ x2 ~; q( G
100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
. t- W! m' [" P  [: z* Q[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh3 b5 o4 m2 ^: v) v
4.0K    one.part1% g1 P9 Z% _7 h' f4 A1 O5 S6 j* Y
112K    three.part3- y2 p3 _% \; Z2 P/ }  ?8 }
4.0K    two.part2
5 e1 {; v8 C) ^* _9 G1 C用的时候,把他们cat一下就OK了,cat img.part* >img.jpg
" M; N0 L5 [  R7 y$ E$ c) {
" @5 U/ r9 O0 [- U0 @9 n# l* U) h. s, h
12,不会显示下载进度信息
2 n& d7 |/ c7 w7 ^6 B/ e% _$ d5 `+ b5 K. ^. w2 ?
9 w1 p0 \9 W1 Y! \
[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg' }& I/ Z% S* a. ^3 Y
13,显示下载进度条
* v6 w) g7 \3 z! }$ K' i' d& {& ~' y/ S0 v% A; [1 x; Y
" v3 f) r# }( z1 n1 z2 E
[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
" W( |9 C  s2 w- c4 l% X6 c######################################################################## 100.0%
( X' w- _9 K# e5 P' i14,通过ftp下载文件
- G, Z6 }8 K- b* v% u/ Q4 \- d3 x* ?! m. f. G2 ^

# @, D0 l5 c* v: V, W0 U[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css( q" Y& W, N& @( S, p" w" K" e
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current" ?  m- n5 N3 i$ \8 ^1 N3 J( Q
Dload  Upload   Total   Spent    Left  Speed
/ {* u* L, r3 P0 h" {101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  71363 E; ~7 k. c6 S& J6 Q( P# F
或者用下面的方式2 E) c+ V& ^  T9 G: b- l$ D% l3 }7 a
[zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css
/ H. J* G. p3 v9 T0 C15,通过ftp上传
' i; _+ A5 }* W7 |! a
2 B3 f6 {/ S$ x3 s4 `  ^0 J7 @5 [6 B, O
[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/4 k& l- ]* f. D3 ]
参考:http://www.codesky.net/article/201010/170043.html

返回列表
Namecheap
Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting
互联网安全