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




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

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。
7 Z2 N  h8 [! B7 B7 E& P* i
' B# z- \8 p' P- Y; D/ Y8 H" ]# H6 |: U" k' m; ]! f) b
9 N0 l" ~5 o4 |7 t) H( q+ Z
4 m' y( I% W! U+ L& }, f3 ~; C
一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。& m0 R9 E" d+ h# E+ h6 m! y! G

4 G2 i8 v6 i! h1 [" }
  K5 U/ p5 L; L4 ?  O, G% T- _-a/--append 上传文件时,附加到目标文件
% Y5 M5 Z. i# f4 G -A/--user-agent <string>  设置用户代理发送给服务器
: B( X% @4 X1 h+ |. b# s7 z - anyauth   可以使用“任何”身份验证方法
, u& B- T& H4 u  H9 Y  ` -b/--cookie <name=string/file> cookie字符串或文件读取位置5 M' H$ q4 }' g1 y( _
- basic 使用HTTP基本验证
; I: ]9 O/ D* d5 y$ ? -B/--use-ascii 使用ASCII /文本传输) Z. _. D1 s% ~  T5 P5 X
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中! d- }' N# x: W+ a
-C/--continue-at <offset>  断点续转
1 W) ]5 ?: m  D1 X9 B8 S -d/--data <data>   HTTP POST方式传送数据6 Y- s+ U& y: f& U
--data-ascii <data>  以ascii的方式post数据
% Z' K4 T% s2 X  `" `/ ^& D --data-binary <data> 以二进制的方式post数据* e! X# s, |$ V5 B
--negotiate     使用HTTP身份验证- a# S# N; C6 F& u. y2 V
--digest        使用数字身份验证
6 \% a1 [* o! k --disable-eprt  禁止使用EPRT或LPRT
& t5 c& \9 o$ N" x/ d# u9 \* H --disable-epsv  禁止使用EPSV  ~$ {: w9 i6 Y$ `/ U
-D/--dump-header <file> 把header信息写入到该文件中2 e& _4 Z  o9 x/ O! p
--egd-file <file> 为随机数据(SSL)设置EGD socket路径& O$ P% ?' ]( K1 c& {/ L
--tcp-nodelay   使用TCP_NODELAY选项8 E1 p/ w4 v; D
-e/--referer 来源网址% J0 x+ {- ]5 |9 }( e2 p# ?
-E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)) E: X& j3 T7 y( `- d
--cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)6 Q2 i0 P0 n: ^; U
--key <key>     私钥文件名 (SSL)6 v9 c7 l" T/ X, w6 d; X$ P
--key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
) U4 c, j! L' T. B5 Q5 s --pass  <pass>  私钥密码 (SSL)- `, G( T/ ~) x9 T! G1 P
--engine <eng>  加密引擎使用 (SSL). "--engine list" for list
* p" x% V- z! v) _ --cacert <file> CA证书 (SSL)
$ h) g: o3 T! x9 C --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
/ }2 ?" ~) i: V6 ^3 _, w --ciphers <list>  SSL密码
, S" l( J0 r' X: z, ? --compressed    要求返回是压缩的形势 (using deflate or gzip)5 v- m5 M& X: m
--connect-timeout <seconds> 设置最大请求时间' v1 Z9 w- U, ?( m8 h; J$ b* ~# N
--create-dirs   建立本地目录的目录层次结构
" a* `: q* }+ }+ U --crlf          上传是把LF转变成CRLF
6 v' q, A9 d" J  x( i! N -f/--fail          连接失败时不显示http错误# `/ P4 X* X/ f* A) ]/ _$ Y
--ftp-create-dirs 如果远程目录不存在,创建远程目录
! o. D$ \$ e$ r- N2 @6 ^- L  K --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用' h, e' O' @- `* O
--ftp-pasv      使用 PASV/EPSV 代替端口
) ~# ~+ W4 g; M1 k3 R0 Y3 k --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
* [/ `5 ?8 l1 q" ^" o --ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输* D8 N+ @6 ?1 f* b; b7 G
--ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输( ?: P) C2 x) [- W% s( Z2 ?1 `
-F/--form <name=content> 模拟http表单提交数据
( Z" j, f0 l+ Z -form-string <name=string> 模拟http表单提交数据
+ X' ~( y9 m2 y. x, ]9 B -g/--globoff 禁用网址序列和范围使用{}和[]
$ e; j! ]9 j% `+ T. C" ]$ A& `2 m -G/--get 以get的方式来发送数据: O. W6 Z7 d' B! D5 K
-h/--help 帮助/ f% m' I$ }# D
-H/--header <line>自定义头信息传递给服务器) K' s0 ?) T' X0 \; g
--ignore-content-length  忽略的HTTP头信息的长度! r  \: A& y0 ~
-i/--include 输出时包括protocol头信息' A4 p5 y* q& X' L, e2 w5 F+ i
-I/--head  只显示文档信息
% W7 O) [& C6 U* ] 从文件中读取-j/--junk-session-cookies忽略会话Cookie
6 d7 o. o9 p2 [5 |# T) T- Z - 界面<interface>指定网络接口/地址使用
: U; @8 a0 S# g* S$ `- G( K! d - krb4 <级别>启用与指定的安全级别krb4
6 K2 |2 M* q0 n0 y$ H" K -j/--junk-session-cookies 读取文件进忽略session cookie7 I5 C0 x; |' h8 Z" ^' X
--interface <interface> 使用指定网络接口/地址
0 }- h. j( y3 _- C --krb4 <level>  使用指定安全级别的krb4
' O6 ?; N6 D5 D: G -k/--insecure 允许不使用证书到SSL站点) B# ?6 Z# V$ c' Q4 C5 p" S
-K/--config  指定的配置文件读取
4 R. V' M; y; C$ d7 p% v, h -l/--list-only 列出ftp目录下的文件名称
2 N* \* b- Q6 Y --limit-rate <rate> 设置传输速度
+ a+ ]- G: H: X" `" I+ o( a --local-port<NUM> 强制使用本地端口号
5 T6 A* U$ k1 F% x* {  Q3 P -m/--max-time <seconds> 设置最大传输时间) E* T0 P0 B3 u5 d  b. h
--max-redirs <num> 设置最大读取的目录数
8 y1 H# `: W, u --max-filesize <bytes> 设置最大下载的文件总量
; @! M: S9 j5 g. O& N -M/--manual  显示全手动
3 x/ R3 K. j5 e. ^4 e. ~1 e% G+ Z -n/--netrc 从netrc文件中读取用户名和密码
  }) C' C' Q& Y, z4 Q6 j --netrc-optional 使用 .netrc 或者 URL来覆盖-n
( ?2 p  \3 I  y2 S/ |& b. q --ntlm          使用 HTTP NTLM 身份验证
& ]$ o, R/ [; b6 [: T! v* n -N/--no-buffer 禁用缓冲输出
2 z, P2 c. u" F) E -o/--output 把输出写到该文件中
! L8 d0 j3 e8 v -O/--remote-name 把输出写到该文件中,保留远程文件的文件名% S  z$ z5 u% h& F1 l9 p! F" |7 P
-p/--proxytunnel   使用HTTP代理
) z8 b1 |% Y- M; E --proxy-anyauth 选择任一代理身份验证方法. L7 i/ S& D2 n. L+ Z
--proxy-basic   在代理上使用基本身份验证2 F7 a  E+ `5 w6 |
--proxy-digest  在代理上使用数字身份验证5 D& Z1 l! ?" Q/ U
--proxy-ntlm    在代理上使用ntlm身份验证7 H2 t0 L! y- r# V
-P/--ftp-port <address> 使用端口地址,而不是使用PASV# R- V  f% z7 i) A
-Q/--quote <cmd>文件传输前,发送命令到服务器# ?6 R5 Y5 X5 n: O% {. m+ \- B
-r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围
; a1 s8 V( s1 K --range-file 读取(SSL)的随机文件
# I( `" p8 h7 g+ c* C' I& O -R/--remote-time   在本地生成文件时,保留远程文件时间/ w5 Q' \7 |1 `
--retry <num>   传输出现问题时,重试的次数
9 ~6 w$ \8 n! z) ?0 Y: t" z' X4 u --retry-delay <seconds>  传输出现问题时,设置重试间隔时间
3 K0 S% \. N2 ]. @8 F! N1 } --retry-max-time <seconds> 传输出现问题时,设置最大重试时间  m* k3 j6 u. B7 y
-s/--silent静音模式。不输出任何东西; I; K* N% L5 e) r/ R6 P* k/ ^
-S/--show-error   显示错误+ T4 B8 [  k8 R" J  s/ @
--socks4 <host[:port]> 用socks4代理给定主机和端口
. E" B$ ]8 t- g" D+ k* p# r" @! C --socks5 <host[:port]> 用socks5代理给定主机和端口+ R. n5 o+ S+ O
--stderr <file>. m) j. ?9 j- ?) `
-t/--telnet-option <OPT=val> Telnet选项设置* {1 J6 p! ?2 y$ }% Y) G9 l* E/ a
--trace <file>  对指定文件进行debug
; V8 E) ^# j  ?3 }1 K --trace-ascii <file> Like --跟踪但没有hex输出5 k/ J$ c6 S( C8 L1 t- c) @7 i
--trace-time    跟踪/详细输出时,添加时间戳3 G. u* ?* W7 D2 i
-T/--upload-file <file> 上传文件
  t* ~* r. v! J* \" } --url <URL>     Spet URL to work with
% d7 N' L7 S# v7 k1 ~ -u/--user <user[:password]>设置服务器的用户和密码6 p% |0 S( Q' A, p$ v1 {
-U/--proxy-user <user[:password]>设置代理用户名和密码1 Z/ _+ U, B% a5 o: s* s
-v/--verbose
3 e' E# g3 e6 u1 O* z/ r7 q -V/--version 显示版本信息
( w! E+ S7 s6 f, t" p -w/--write-out [format]什么输出完成后
" P* }! o) `! R* O+ ~- o* \1 Q -x/--proxy <host[:port]>在给定的端口上使用HTTP代理
7 s4 T- y1 w/ k- G  u -X/--request <command>指定什么命令" I8 G' V/ j' b, {
-y/--speed-time 放弃限速所要的时间。默认为30
2 B. |2 f& M5 b' A5 n4 ^$ B -Y/--speed-limit 停止传输速度的限制,速度时间'秒( }% c, m5 m  _, y/ `& O( C. j3 G- C
-z/--time-cond  传送时间设置
9 W; {+ A+ Z4 {+ w; `7 I( I -0/--http1.0  使用HTTP 1.0
7 `+ _& r$ |9 v6 C7 L3 v% }7 U: H -1/--tlsv1  使用TLSv1(SSL)
7 }4 \" x; e5 n* ?! H -2/--sslv2 使用SSLv2的(SSL)) L, L5 S9 M! D  R# Y3 X0 o# w
-3/--sslv3         使用的SSLv3(SSL)
: h1 \5 h9 e2 n8 O --3p-quote      like -Q for the source URL for 3rd party transfer
+ P5 T# D7 r5 e. c; D# R6 a+ d* x --3p-url        使用url,进行第三方传送
3 |5 D9 K% V0 o) o5 j --3p-user       使用用户名和密码,进行第三方传送. ?8 T1 `4 Z& }$ ?
-4/--ipv4   使用IP4
& x6 d! N- j4 Z6 o/ n! C$ H -6/--ipv6   使用IP6, k3 ^& v6 C1 }- F8 h% D# \& |
-#/--progress-bar 用进度条显示当前的传送状态
0 Q0 d& `( Z, E: h7 _二,常用curl实例
# x1 b9 R1 @6 i4 e* Y
& V+ U, ?8 |4 i# b2 f8 s
- u3 o" e+ u1 d  i" B, u5 f( G  a' n, R1,抓取页面内容到一个文件中# w$ ?; i; ^) q: i. {( y
6 q4 M) t3 X5 C1 j4 F* r

3 u+ Z# J* [- U) ]# e0 h$ z[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net' g( S, l% }/ r1 Q
2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西- h. G$ N" \8 ^0 r
1 f2 f  w, f$ H" m/ _% `8 X
" N4 U' v/ `/ [
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
+ W$ j/ T0 [' Z% B/ Z1 J! g' S[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg
$ N' F$ F5 Q! e+ [# p1 w3,模拟表单信息,模拟登录,保存cookie信息
9 m" _( W7 O5 F+ B. D
  ~0 i1 ]+ F& R- d0 f- s+ W3 C! E& A, h
[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php( U/ E) y' \: ^8 e, @$ ?- o4 x- h$ l
4,模拟表单信息,模拟登录,保存头信息
; }2 C- U# ]" L. u1 m6 Q. k7 I% N6 G7 F/ A

8 x  w: z  f' r* Q2 w  {[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
. o$ {& I0 @; _+ h-c(小写)产生的cookie和-D里面的cookie是不一样的。
+ B) }! z. ?, m4 o& h9 l8 X; }9 G
% }, S: Q2 w! k7 f; i0 {
5,使用cookie文件* b7 d. Q+ q7 A5 w  a5 p4 x3 `
& J# y" X2 j5 [" w  r$ v

; o4 T9 @* f' R$ O) B: K7 M[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin
, e, Q. {  M9 _1 ?' A' E6,断点续传,-C(大写的)% }' t0 C* x  v- H; W& E
% M. ]4 f' K; K5 ^6 g6 b2 P
& f1 y! q2 h' ]) f7 Q) N/ b
[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg! c- y. F" C; |9 }. p
7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功
2 w3 c! G+ [8 f  G5 z( z% C! I7 ?7 t+ c- ~" f, }; L7 n
% F2 i) Y3 v2 m* L+ b
[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php, T/ J( f! t* E! R2 E5 X
8,显示抓取错误,下面这个例子,很清楚的表明了。/ t; Y: \7 t, \: n( ^) l1 S

' _* c' l" R8 T, L) a
: s0 [2 X/ y& J9 j5 s" m[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf" f: U$ T6 z/ G/ n) B
curl: (22) The requested URL returned error: 404  `& R% \$ V0 S- v2 w
[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf1 x! [9 W* Y) {# U- d( @7 \" P. ?
<HTML><HEAD><TITLE>404,not found</TITLE>
# G8 \5 u/ I* D6 {3 z。。。。。。。。。。。。
7 Z/ n/ s0 p$ X2 _* b9,伪造来源地址,有的网站会判断,请求来源地址。, b) A/ c4 I* x: k; H8 ]' r2 H

8 S; h5 |$ l, c7 t3 j( a, \% ^$ c0 l% d. c2 G1 y. t' H# A  A# ~+ ]
[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php
+ b% h; N; T$ M" F) W- R' _10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理( C! @2 S7 e( m' d) h0 n

  h6 L4 ?/ V* M: V9 y$ m/ g/ T' w. q
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net: E0 A4 `# R2 Z% F
11,比较大的东西,我们可以分段下载
2 Q7 Y9 n2 E  V; N( r+ g; @6 S+ [- U# q

8 T+ |" y1 g% c' B. r# b5 M[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-( e  P- \) c/ l8 H, F: G
content/uploads/2010/09/compare_varnish.jpg1 E. N# R7 Q8 U+ O- u& ~
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current8 Q7 \. D- I. y) v4 m) f0 x/ G
Dload  Upload   Total   Spent    Left  Speed  I0 `% p8 B0 F
100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0* r$ |+ v, G& |0 Q+ G- h1 ]
[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-4 b! f8 x. }/ s; ]2 r
content/uploads/2010/09/compare_varnish.jpg
1 X  w7 }2 o% p  \' _9 p$ U8 c % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current) p( P& I* e; E4 V. F' @* H! R* a
Dload  Upload   Total   Spent    Left  Speed0 T, |% S5 D6 x; s
100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
7 B3 h% d0 S$ N3 N( G! _' Z% e: L[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-) H" D- A/ D$ f5 S- R. p
content/uploads/2010/09/compare_varnish.jpg2 m8 `  Q# Q, L$ W* g
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current1 \) p1 T- U) t7 V: a9 W
Dload  Upload   Total   Spent    Left  Speed% [- N9 _6 ?/ p+ y
100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
2 A5 t3 U( y( v0 f; |9 R4 w[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh
6 N2 s& n# D- I* M- i6 E4.0K    one.part10 d! U9 q& V! v* L$ T' d, ?
112K    three.part3' R- x( s! A# j7 z2 n3 ^0 ]$ c( i
4.0K    two.part2
$ M/ t3 B9 v/ X用的时候,把他们cat一下就OK了,cat img.part* >img.jpg
! O+ G6 ?# v# g" F9 i, s7 F  e  i# g# P. W2 G

  p, A9 N0 k8 I/ w7 K* Z! i12,不会显示下载进度信息
7 n. H$ G" N  e" v1 F) G7 Z7 ^7 E: O: J) `) x" O& _

6 Z( Q1 N7 y2 Y; S' c[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
& c( }: n9 n& p  v( e1 L7 D7 h* f  ?13,显示下载进度条
0 \6 ]. ^6 x9 q; @/ X3 L1 \$ N
6 O; b& X( A3 r% P; e# l
/ L+ p( B: A5 M+ F' p$ R[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg1 `7 }8 n/ S3 d
######################################################################## 100.0%
4 P0 |/ M) i8 h& Y) R+ t0 N' ?; ]14,通过ftp下载文件
7 N+ l$ E7 ^9 L" [6 M8 V; b1 q" Q5 T# `$ Z" `6 P" [) \+ V
- k) ^+ B4 q8 R( Q7 H8 O$ {
[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css
2 H  n5 C5 p9 |4 D! H' } % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
: q7 Y( G8 D/ F6 O1 {- u5 Q* ] Dload  Upload   Total   Spent    Left  Speed8 N% \7 H/ J/ n! S6 r
101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
! z( r3 a: l. ~) a6 Q. ?% {. w. z6 U或者用下面的方式$ T+ }. z' ]! Z- v! l# [$ e
[zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css; _- Y8 x2 r) R6 [  k
15,通过ftp上传; V9 S. u: Y/ c$ w) _; z7 _

7 U, J3 Z/ s; _3 B+ l6 B5 k3 p
! w. _! X8 k' B' X4 h/ V. j7 \[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/
. B7 H6 C1 {! F, v参考:http://www.codesky.net/article/201010/170043.html

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