天天看點

Linux指令之curl指令一、指令簡介二、使用示例三、使用文法及參數說明

一、指令簡介

  curl指令在linux作業系統中經常來測試網絡和url的聯通性,模拟正常的網絡通路。curl是一個利用URL規則在指令行下工作的檔案傳輸工具,可以說是一款很強大的http指令行工具。它支援檔案的上傳和下載下傳,是綜合傳輸工具,但按傳統,習慣稱url為下載下傳工具。curl還支援包括HTTP、HTTPS、ftp等衆多協定,還支援POST、cookies、認證、從指定偏移處下載下傳部分檔案等功能。

二、使用示例

1、直接通路網站

[[email protected] ~]# curl www.baidu.com
Linux指令之curl指令一、指令簡介二、使用示例三、使用文法及參數說明

2、僅顯示網站頭檔案

[[email protected] ~]# curl -I www.baidu.com
Linux指令之curl指令一、指令簡介二、使用示例三、使用文法及參數說明

3、顯示詳細通信過程

[[email protected] ~]# curl -v http://www.baidu.com
Linux指令之curl指令一、指令簡介二、使用示例三、使用文法及參數說明

4、下載下傳指定檔案

-o和-O的差別在于小寫o是儲存到指令行中指定檔案名,大寫O是使用URL中檔案名作為輸出檔案

[[email protected] opt]# curl -O http://www.linux.com/hello.sh
[[email protected] opt]# curl -o log.png http://www.bigdatayh.com/images/index_fonts.png
Linux指令之curl指令一、指令簡介二、使用示例三、使用文法及參數說明

5、指定代理下載下傳

[[email protected] opt]# curl -x 192.168.0.1:18080 http://www.baidu.com

6、儲存http的response裡面的cookie資訊

[[email protected] opt]# curl -c cookiec.txt http://www.baidu.com
Linux指令之curl指令一、指令簡介二、使用示例三、使用文法及參數說明

7、儲存http的response裡面的header資訊

[[email protected] opt]# curl -D cookiec.txt http://www.baidu.com
Linux指令之curl指令一、指令簡介二、使用示例三、使用文法及參數說明

8、模拟浏覽器通路

模拟IE8通路百度

[[email protected] opt]# curl -A “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)” http://www.baidu.com

9、僞造referer反射器

[[email protected] opt]# curl -e ‘http://www.baidu.com?=新浪體育’ https://sports.sina.com.cn/

10、通過ftp下載下傳檔案

[[email protected] opt]# curl -O -u 使用者名:密碼 ftp://www.linux.com/dodo1.JPG

[[email protected] opt]# curl -O ftp://使用者名:密碼@www.linux.com/dodo1.JPG

11、上傳檔案

[root@test1 opt]#curl -T dodo1.JPG -u 使用者名:密碼 ftp://www.linux.com/img/

三、使用文法及參數說明

1、使用文法

用法:curl [option] [url]

2、參數說明

參數 參數說明
-A,–user-agent <string> 設定使用者代理發送給伺服器
-a,–append 上傳檔案時,附加到目标檔案
–anyauth 可以使用“任何”身份驗證方法
–basic 使用HTTP基本驗證
-b,–cookie <name=string/file> cookie字元串或檔案讀取位置
-c,–cookie-jar 操作結束後把cookie寫入到這個檔案中
-C,–continue-at 斷點續轉
-D,–dump-header 把header資訊寫入到該檔案中
-e,–referer 來源網址
-f,–fail 連接配接失敗時不顯示http錯誤
-o,–output 把輸出寫到該檔案中
-O,–remote-name 把輸出寫到該檔案中,保留遠端檔案的檔案名
-r,–range 檢索來自HTTP/1.1或FTP伺服器位元組範圍
-s,–silent 靜音模式。不輸出任何東西
-T,–upload-file 上傳檔案
-w,–write-out [format] 什麼輸出完成後
-x,–proxy <host[:port]> 在給定的端口上使用HTTP代理
-B,–use-ascii 使用ASCII文本傳輸
-d,–data <data> HTTP 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 設定最大請求時間
–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 自定義頭資訊傳遞給伺服器
–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 使用 .netrc 或者 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代理給定主機和端口
–socks5 <host[:port]> 用socks5代理給定主機和端口
-T, --upload-file FILE 将檔案傳輸到目标
-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
-#/–progress-bar 進度條顯示目前的傳送狀态