首頁 > 軟體

curl 使用範例詳解

2020-06-16 16:58:26

一、最新版本

你可以在官網上了解到curl的開發的最新情況,並下載到最新版本的程式。

二、相對簡單的用法

1、從Netscape的網頁伺服器上獲得該網站的主頁:

curl http://www.netscape.com/

2、從futnet的ftp伺服器的使用者主目錄獲得指定檔案:README

curl ftp://ftp.funet.fi/README

3、使用伺服器的8000埠獲得web主頁:

curl http://www.weirdserver.com:8000/

4、列出ftp站點目錄中的檔案:

curl ftp://cool.haxx.se/

5、從字典查詢網站獲得詞條curl的定義:

curl dict://dict.org/m:curl

6、次性操作取得二份文件:

curl ftp://cool.haxx.se/ http://www.weirdserver.com:8080/

7、從FTPS伺服器上獲取檔案:

curl ftps//files.are.secure.com/secrets.txt

或者使用推薦的方法存取FTPS伺服器來執行相同的操作:

curl --ftp-ssl  ftp//files.are.secure.com/secrets.txt

8、使用SFTP從一個SSH伺服器上獲取一份檔案:

curl -u username sftp://example.com/etc/issue

9、從一台使用私鑰認證(私鑰未使用密碼保護)的SSH伺服器上使用SCP獲取一份檔案:

curl -u username: --key ~/.ssh/id_rsa 
scp://example.com/~/file.txt

10、從一台使用私鑰認證(私鑰使用密碼保護)的SSH伺服器上使用SCP獲取一份檔案:

curl -u username: --key ~/.ssh/id_rsa --pass private_key_password 
scp://example.com/~/file.txt

11、從一台使用IPv6的網頁伺服器上獲得站點主頁:

curl "http://[2001:1890:1112:1::20]/"

12、從一台Samba檔案伺服器上獲得檔案:

curl -u "domainusername:passwd" smb://server.example.com/share/file.txt

三、下載檔案

1、從網頁伺服器上下載一個web頁面到當前目錄中,並重新指定檔名:

curl -o thatpage.html http://www.netscape.com/

2、從網頁伺服器上下載一個檔案儲存到本地,但不重新指定檔名:

這種情況下,需要在URL中指定待下載的檔名,否則將下載失敗

curl -O http://www.netscape.com/index.html

3、使用原檔名一次性從伺服器上下載二份檔案:

curl -O www.haxx.se/index.html -O curl.haxx.se/download.html

四、使用密碼

1、FTP

對於ftp檔案來說,應當加使用者名稱和密碼加入到URL地址中,用法如下:

curl ftp://name:passwd@machine.domain:port/full/path/to/file

或者使用引數-u來指定使用者名稱和密碼,用法如下:

curl -u name:passwd ftp://machine.domain:port/full/path/to/file

2、FTPS

FTPS使用密碼的方式與FTP的用法很像,只不過是要指定引數--ftp-ssl來進行加密認證而已。
注意:使用FTPS://為字首是以一種‘暗示’的對伺服器進行存取標準方法;當然,你也可以使用‘明示’的方法,用FTP://字首,配合引數--ftp-ssl使用。

3、SFTP/SCP

FTP使用方法類似,但是你需要使用引數--key來指定私鑰檔案來代替系統密碼。需要注意的是,私鑰檔案本身也可以使用密碼進行保護,但這個密碼並不是遠端伺服器的登入密碼。私鑰檔案本身的密碼需要通過引數--pass來進行指定。一般情況一下,curl會自動地從私鑰檔案中提取公鑰,但是curl在沒有適當的目錄支援的情況下,則必須使用引數--plukey來指定與私鑰匹配的公鑰檔案。

4、HTTP

Curl同樣支援在HTTP``URL中使用使用者名稱和密碼,因此你可以使用下面的方法從服務上獲取檔案:

curl http://name:passwd@machine.domain/full/path/to/file

或者另行使用引數來指定使用者名稱和密碼:

curl -u name:passwd http://machine.domain/full/path/to/file

在HTTP提供的諸多認證方式中,curl支援下列認證:Basic, Digest, NTLMNegotiate (SPNEGO)。在未指定任何認證方式的情況下,curl預設使用Basic。你可以通過使用‘–anyauth’來告訴curl使用何種伺服器能夠接受的加密方式來存取指定的URL地址。
注意:根據URL的要求,HTTP URLs是不能包含使用者名稱和密碼的。因此curl在使用代理的情況下是無法以這種方式正常工作的,即使curl有時候是允許這樣操作的。當使用代理的情況下,你必須使用引數-u來指定使用者和密碼。

5、HTTPS

HTTPS可能是私鑰認證最覺的方式,具體內容見下文。

五、代理

curl同時支援HTTPSOCKS代理伺服器,並且可以指定適當的認證方式。因為沒有相應的標準,所以curl並沒有對FTP代理伺服器進行特殊的設定,但是curl也可以大部分的FTP代理伺服器下正常工作。你可以使用HTTP或者SOCKS代理從FTp伺服器上下載和上傳檔案。

1、使用名為my-proxyHTTP代理伺服器,通過888埠,從一台FTP伺服器上下載指定檔案:

curl -x my-proxy:888 ftp://ftp.leachsite.com/README

2、使用上面的代理伺服器,通過使用者名稱和密碼從指定的HTTP伺服器上下載檔案:

curl -u user:passwd -x my-proxy:888 http://www.get.this/

3、一些代理伺服器要求指定認證方式。所以上面的命令需要將-u改為-U

curl -U user:passwd -x my-proxy:888 http://www.get.this/

4、用逗號分隔的主機或者域名列表中,如果有不使用代理伺服器的,應如下指定:

curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/

5、如果使用--proxy1.0代替--proxy或者-x來指定代理伺服器的工作協定,那麼curl將使用HTTP/1.0代替 HTTP/1.1來嘗試進行任何連線。

6、curl使用引數--socks4--socks5來支援SOCKS4SOCKS5代理

可以參見Curl所支援的環境變更,來針對代理服務進行高階設定。

7、從FTP用戶端的角度來看,大部分的FTP代理伺服器都被設定為類似於普通的FTP伺服器,這些伺服器需要通過特殊的命令來選擇遠端伺服器。

curl支援使用-u,-Q--ftp-account選項來設定通過大多數FTP代理來檔案遠端伺服器。
舉例:使用相關引數,通過FTP代理伺服器,向遠端FTP伺服器上傳一份檔案:

curl -u "Remote-FTP-Username@remote.ftp.server Proxy-Username:Remote-Pass" 
--ftp-account Proxy-Password --upload-file local-file  
ftp://my-ftp.proxy.server:21/remote/upload/path/

檢視你的FTP代理伺服器手冊來設定與之匹配的檔案傳輸,並使用curl-v選項來檢視curl的傳輸內容。

六、範圍

HTTP 1.1引入了位元組範圍。通過這個功能,用戶端可以要求只獲取一個指定檔案的一部分內容。curl通過引數-r來支援此功能。
1、獲取一份檔案的前100個位元組:

curl -r 0-99 http://www.get.this/

2、獲取一份檔案最後500個位元組:

curl -r -500 http://www.get.this/

3、Curl同時也支援下載FTP伺服器上的檔案的一定範圍內的內容.

你可以指定檔案的開始和結束的位置。
FTP伺服器上獲取一份檔案的前100個位元組的內容:

curl -r 0-99 ftp://www.get.this/README

七、上傳

(一)、FTP / FTPS / SFTP / SCP

1、上傳標準輸入的所有資料到指定伺服器:

curl -T - ftp://ftp.upload.com/myfile

2、使用使用者名稱和密碼,上傳指定檔案到伺服器上(在URL中指定遠端檔名稱):

curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile

3、將本地檔案上傳到遠端站點,遠端伺服器上的檔案使用與本地檔案相同的檔名:

curl -T uploadfile -u user:passwd ftp://ftp.upload.com/

4、將待上傳的檔案追加指定的遠端檔案之後:

curl -T localfile -a ftp://ftp.upload.com/remotefile

5、curl也支援使用代理來完成檔案上傳到ftp,但是只有在代理伺服器已經被設定為允許此型別的通道時才可以完成傳輸。如果代理伺服器支援話,你就可以使用與下面命令類似的命令來完成檔案的上傳:

curl --proxytunnel -x proxy:port -T localfile ftp.upload.com

(二)、SMB / SMBS

curl -T file.txt -u "domainusername:passwd" smb://server.example.com/share/

(三)、HTTP

**上傳標準輸入的所有資料到指定的HTTP站點:

curl -T - http://www.upload.com/myfile

注意:HTTP伺服器必須被事先設定為接受PUT, 上述命令才能被成功的執行。
對於HTTP資料上傳的其他方式,請參見POST的相關內容。

八、VERBOSE / DEBUG

如果curl沒有按照預想的方式執行,或者伺服器拒絕你的存取,再或者你根本看不懂反餽資訊,請使用引數-v 來獲取完成的執行資訊。curl將輸出大量的傳送和接收資訊,來讓使用者檢視所有的用戶端和伺服器的互動內容,但它並不會顯示你的真實資料。

curl -v ftp://ftp.upload.com/

如果還想從curl獲得更為詳盡的資訊,請嘗試使用引數--trace或者--trace-ascii 同時指定紀錄檔檔案的名稱:

curl --trace trace.txt www.haxx.se

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2017-12/149659p2.htm


IT145.com E-mail:sddin#qq.com