2021-05-12 14:32:11
curl 使用範例詳解
一、最新版本
你可以在官網上了解到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
, NTLM
和 Negotiate
(SPNEGO)。在未指定任何認證方式的情況下,curl
預設使用Basic
。你可以通過使用‘–anyauth’來告訴curl
使用何種伺服器能夠接受的加密方式來存取指定的URL地址。
注意:根據URL
的要求,HTTP
URLs
是不能包含使用者名稱和密碼的。因此curl
在使用代理的情況下是無法以這種方式正常工作的,即使curl
有時候是允許這樣操作的。當使用代理的情況下,你必須使用引數-u
來指定使用者和密碼。
5、HTTPS
HTTPS可能是私鑰認證最覺的方式,具體內容見下文。
五、代理
curl
同時支援HTTP
和SOCKS
代理伺服器,並且可以指定適當的認證方式。因為沒有相應的標準,所以curl
並沒有對FTP
代理伺服器進行特殊的設定,但是curl
也可以大部分的FTP
代理伺服器下正常工作。你可以使用HTTP
或者SOCKS
代理從FTp
伺服器上下載和上傳檔案。
1、使用名為my-proxy
的HTTP
代理伺服器,通過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
來支援SOCKS4
和SOCKS5
代理
可以參見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
相關文章