Linux之curl命令使⽤详解—⽹络故障定位(五)
前⾔
该命令设计⽤于在没有⽤户交互的情况下⼯作。
curl 是⼀个⼯具,⽤于传输来⾃服务器或者到服务器的数据。「向服务器传输数据或者获取来⾃服务器的数据」
可⽀持的协议有(DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET和TFTP)。
curl提供了⼤量有⽤的技巧,⽐如代理⽀持、⽤户⾝份验证、FTP上传、HTTP post、SSL连接、cookie、⽂件断点续传、Metalink等等。
语法:# curl [option] [url]
常见参数:
-A/--user-agent <string>              设置⽤户代理发送给服务器
-
b/--cookie <name=string/file>    cookie字符串或⽂件读取位置
-c/--cookie-jar <file>                    操作结束后把cookie写⼊到这个⽂件中
-C/--continue-at <offset>            断点续转
-D/--dump-header <file>              把header信息写⼊到该⽂件中
-e/--referer                                  来源⽹址
-f/--fail                                          连接失败时不显⽰http错误
-o/--output                                  把输出写到该⽂件中
-O/--remote-name                      把输出写到该⽂件中,保留远程⽂件的⽂件名
-r/--range <range>                      检索来⾃HTTP/1.1或FTP服务器字节范围
-s/--silent                                    静⾳模式。不输出任何东西
-T/--upload-file <file>                  上传⽂件
-
u/--user <user[:password]>      设置服务器的⽤户和密码
-w/--write-out [format]                什么输出完成后
-x/--proxy <host[:port]>              在给定的端⼝上使⽤HTTP代理
-#/--progress-bar                        进度条显⽰当前的传送状态
例⼦:
1. 基本⽤法
# curl www.linux
执⾏后,www.linux 的html就会显⽰在屏幕上了
Ps:由于安装linux的时候很多时候是没有安装桌⾯的,也意味着没有浏览器,因此这个⽅法也经常⽤于测试⼀台服务器是否可以到达⼀个⽹站
2. 指定proxy服务器以及其端⼝
很多时候上⽹需要⽤到代理服务器(⽐如是使⽤代理服务器上⽹或者因为使⽤curl别⼈⽹站⽽被别⼈屏蔽IP地址的时候),幸运的是curl通过使⽤内置option:-x来⽀持设置代理
# curl -x 192.168.100.100:1080 www.linux
3. cookie
有些⽹站是使⽤cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可
以很容易的处理cookie
3.1:保存http的response⾥⾯的cookie信息。内置option:-c(⼩写)
# curl -  www.linux
执⾏后cookie信息就被存到了⾥⾯了
4. get请求
curl “www.baidu” 如果这⾥的URL指向的是⼀个⽂件或者⼀幅图都可以直接下载到本地
curl -i “www.baidu” 显⽰全部信息
curl -l “www.baidu” 只显⽰头部信息
curl是什么命令
curl -v “www.baidu” 显⽰get请求全过程解析
5. POST 请求
可以⽤ -X POST 来申明我们的请求⽅法,⽤ -d 参数,来传送我们的参数。
所以,我们可以⽤ -X PUT 和 -X DELETE 来指定另外的请求⽅法。
curl ***.***.**.**/api/api -X POST -d"parameterName1=parameterValue1¶meterName2=parameterValue2"
上⾯就是⼀个普通的 post带两个参数请求
但是,当我们的接⼝都是 json 格式的时候,我们可以⽤ -H 参数来申明请求的 header
curl ***.***.**.**/api/api -X POST -H"Content-Type:application/json" -d'{"parameterName1":"parameterValue1","parameterName2":"parameterValue2"}我们可以⽤ -H 来设
置更多的 header ,同样,我们也可以⽤ -v 来查看详细的请求信息
6. POST 上传⽂件
上⾯的两种请求,都是只传输字符串数据
通常我们的开发过程中也需要使⽤POST接⼝上传⽂件
我们添加参数 -F "file=@FILE_PATH" 传输⽂件即可。命令如下:
curl ****.**.**.**/api/api/uplaod -F"file=@/Users/local/imgs/my.png"  -v
其他参数(此处翻译为转载):
-a/--append                        上传⽂件时,附加到⽬标⽂件
--anyauth                            可以使⽤“任何”⾝份验证⽅法
--basic                                使⽤HTTP基本验证
-B/--use-ascii                      使⽤ASCII⽂本传输
-
d/--data <data>                  HTTP POST⽅式传送数据
--data-ascii <data>            以ascii的⽅式post数据
--data-ascii <data>            以ascii的⽅式post数据
--data-binary <data>          以⼆进制的⽅式post数据
--negotiate                          使⽤HTTP⾝份验证
--digest                        使⽤数字⾝份验证
--disable-eprt                  禁⽌使⽤EPRT或LPRT
--disable-epsv                  禁⽌使⽤EPSV
--egd-file <file>              为随机数据(SSL)设置EGD socket路径
--tcp-nodelay                  使⽤TCP_NODELAY选项
-E/--cert <cert[:passwd]>      客户端证书⽂件和密码 (SSL)
-
-cert-type <type>              证书⽂件类型 (DER/PEM/ENG) (SSL)
--key <key>                    私钥⽂件名 (SSL)
--key-type <type>              私钥⽂件类型 (DER/PEM/ENG) (SSL)
--pass  <pass>                  私钥密码 (SSL)
--engine <eng>                  加密引擎使⽤ (SSL). "--engine list" for list
--cacert <file>                CA证书 (SSL)
--capath <directory>            CA⽬  (made using c_rehash) to verify peer against (SSL) --ciphers <list>                SSL密码
--compressed                    要求返回是压缩的形势 (using deflate or gzip)
--connect-timeout <seconds>    设置最⼤请求时间
--create-dirs                  建⽴本地⽬录的⽬录层次结构
--crlf                          上传是把LF转变成CRLF
--ftp-create-dirs              如果远程⽬录不存在,创建远程⽬录
--ftp-method [multicwd/nocwd/singlecwd]    控制CWD的使⽤
--ftp-pasv                      使⽤ PASV/EPSV 代替端⼝
--ftp-skip-pasv-ip              使⽤PASV的时候,忽略该IP地址
--ftp-ssl                      尝试⽤ SSL/TLS 来进⾏ftp数据传输
--ftp-ssl-reqd                  要求⽤ SSL/TLS 来进⾏ftp数据传输
-F/--form <name=content>        模拟http表单提交数据
-form-string <name=string>      模拟http表单提交数据
-g/--globoff                    禁⽤⽹址序列和范围使⽤{}和[]
-G/--get                        以get的⽅式来发送数据
-h/--help                      帮助
-
H/--header <line>              ⾃定义头信息传递给服务器
--ignore-content-length        忽略的HTTP头信息的长度
-i/--include                    输出时包括protocol头信息
-I/--head                      只显⽰⽂档信息
-j/--junk-session-cookies      读取⽂件时忽略session cookie
--interface <interface>        使⽤指定⽹络接⼝/地址
--krb4 <level>                  使⽤指定安全级别的krb4
-k/--insecure                  允许不使⽤证书到SSL站点
-K/--config                    指定的配置⽂件读取
-l/--list-only                  列出ftp⽬录下的⽂件名称
--limit-rate <rate>            设置传输速度
-
-local-port<NUM>              强制使⽤本地端⼝号
-m/--max-time <seconds>        设置最⼤传输时间
--max-redirs <num>              设置最⼤读取的⽬录数
--max-filesize <bytes>          设置最⼤下载的⽂件总量
-M/--manual                    显⽰全⼿动
-n/--netrc                      从netrc⽂件中读取⽤户名和密码
--netrc-optional                使⽤ rc 或者 URL来覆盖-n
--ntlm                          使⽤ HTTP NTLM ⾝份验证
-N/--no-buffer                  禁⽤缓冲输出
-p/--proxytunnel                使⽤HTTP代理
--proxy-anyauth                选择任⼀代理⾝份验证⽅法
-
-proxy-basic                  在代理上使⽤基本⾝份验证
--proxy-digest                  在代理上使⽤数字⾝份验证
--proxy-ntlm                    在代理上使⽤ntlm⾝份验证
-P/--ftp-port <address>        使⽤端⼝地址,⽽不是使⽤PASV
-Q/--quote <cmd>                ⽂件传输前,发送命令到服务器
--range-file                    读取(SSL)的随机⽂件
-R/--remote-time                在本地⽣成⽂件时,保留远程⽂件时间
--retry <num>                  传输出现问题时,重试的次数
--retry-delay <seconds>        传输出现问题时,设置重试间隔时间
--retry-max-time <seconds>      传输出现问题时,设置最⼤重试时间
-S/--show-error                显⽰错误
-
-socks4 <host[:port]>          ⽤socks4代理给定主机和端⼝
--socks4 <host[:port]>          ⽤socks4代理给定主机和端⼝
--socks5 <host[:port]>          ⽤socks5代理给定主机和端⼝
-t/--telnet-option <OPT=val>    Telnet选项设置
--trace <file>                  对指定⽂件进⾏debug
--trace-ascii <file>            Like --跟踪但没有hex输出
--trace-time                    跟踪/详细输出时,添加时间戳
--url <URL>                    Spet URL to work with
-U/--proxy-user <user[:password]>  设置代理⽤户名和密码
-V/--version                    显⽰版本信息
-X/--request <command>          指定什么命令
-
y/--speed-time                放弃限速所要的时间。默认为30
-Y/--speed-limit                停⽌传输速度的限制,速度时间'秒
-z/--time-cond                  传送时间设置
-0/--http1.0                    使⽤HTTP 1.0
-1/--tlsv1                      使⽤TLSv1(SSL)
-2/--sslv2                      使⽤SSLv2的(SSL)
-3/--sslv3                      使⽤的SSLv3(SSL)
--3p-quote                      like -Q for the source URL for 3rd party transfer --3p-url                        使⽤url,进⾏第三⽅传送
--3p-user                      使⽤⽤户名和密码,进⾏第三⽅传送
-4/--ipv4                      使⽤IP4
-6/--ipv6                      使⽤IP6

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。