日韩国产精品99成人不卡在线无毒|狠狠躁夜夜爽一级二级精品|亚洲日日噜噜孕妇中文字幕|日韩久草中文三级片

新聞動態(tài)

Linux 下命令行CURL的15種常見示例!

網(wǎng)站建設(shè) 發(fā)布者:cya 2020-01-19 11:10 訪問量:447

來自公眾號:CU技術(shù)社區(qū)

在本教程中,我們將介紹Linux中的cURL命令。我們會給出一些示例來指導(dǎo)您了解這個強大的實用程序的功能,幫助您理解它所能實現(xiàn)的所有功能。
cURL命令用于使用其20多種受支持協(xié)議之一,將數(shù)據(jù)下載或上傳到服務(wù)器。此數(shù)據(jù)可以是文件、電子郵件或網(wǎng)頁。
目錄

  1. 什么是cURL命令?

  2. 下載文件

  3. 遵循重定向

  4. 停止并繼續(xù)下載

  5. 指定超時

  6. 使用用戶名和密碼

  7. 使用代理

  8. 分塊下載大文件

  9. 客戶端證書

  10. Silent cURL

  11. 獲取標(biāo)題

  12. 多個headers

  13. 發(fā)布(上傳)文件

  14. 發(fā)送電子郵件

  15. 閱讀電子郵件

  16. cURL和wget之間的區(qū)別

什么是cURL命令?


cURL是與網(wǎng)站或API進行交互,向終端發(fā)送請求并顯示響應(yīng)或?qū)?shù)據(jù)記錄到文件的理想工具。有時,它用作較大腳本的一部分,將檢索到的數(shù)據(jù)交給其他函數(shù)進行處理。
由于cURL可用于從服務(wù)器檢索文件,所以通常用于下載網(wǎng)站的一部分。它可以很好地執(zhí)行此功能,但有時wget命令更適合這項工作。
在本文后面的內(nèi)容中,我們將介紹wget和cURL之間的一些異同。
我們將在下面的部分中向您展示如何開始使用cURL。
下載文件


我們可以給cURL的最基本命令是下載網(wǎng)站或文件。除非我們指定一個不同的協(xié)議,否則cURL將使用HTTP作為其默認(rèn)協(xié)議。要下載網(wǎng)站,只需發(fā)出以下命令:

$ curl http://www.google.com
當(dāng)然,請輸入要檢索的任何網(wǎng)站或頁面。

像這樣執(zhí)行基本命令而沒有其他選項很少有用,因為這只會告訴cURL檢索您所提供頁面的源代碼。

當(dāng)我們運行命令時,我們的終端充滿了HTML和其他Web腳本代碼——在這種形式下,對我們來說不是特別有用。
讓我們將網(wǎng)站下載為HTML文檔,這樣就可以顯示內(nèi)容,可以添加-output選項來實現(xiàn)cURL。

$ curl www.likegeeks.com --output likegeeks.html

現(xiàn)在,我們下載的網(wǎng)站可以打開并顯示在瀏覽器中。

如果您要下載在線文件,則命令大致相同。但是請確保將-output選項附加到cURL中,就像我們在上面的示例中所做的那樣。

如果您沒有這樣做,則cURL會將在線文件的二進制輸出發(fā)送到您的終端,這可能會導(dǎo)致其發(fā)生故障。
這是我們開始下載500KB Word文檔時的樣子。


Word文檔開始下載,并且終端中顯示下載的當(dāng)前進度。下載完成后,該文件將在我們保存該文件的目錄中可用。
在此示例中,未指定目錄,因此將其保存到當(dāng)前的工作目錄(運行cURL命令的目錄)。
另外,您是否注意到我們在cURL命令中指定的-L選項了么?為了下載此文件,這是必要的,我們將在下一部分中介紹它的功能。
遵循重定向


如果在嘗試對網(wǎng)站進行URL生成時輸出為空,則可能意味著該網(wǎng)站告訴cURL重定向到其他URL。默認(rèn)情況下,cURL不會遵循重定向,但是您可以使用 -L switch來告訴它。

$ curl -L www.likegeeks.com

在本文的研究中,我們發(fā)現(xiàn)有必要在大多數(shù)網(wǎng)站上指定-L,因此請務(wù)必記住這一小技巧。默認(rèn)情況下,您甚至可能希望將其附加到大多數(shù)cURL命令中。
停止并繼續(xù)下載


如果您的下載中斷了,或者您需要下載一個大文件但又不想一次完成所有操作,所以cURL提供了一種選項,可以從中斷處繼續(xù)傳輸。
要手動停止傳輸,您可以使用ctrl + c組合鍵結(jié)束cURL進程,就像停止當(dāng)前正在運行的幾乎所有進程一樣。

我們的下載已經(jīng)開始,但是被ctrl + c中斷了,現(xiàn)在讓我們使用以下語法恢復(fù)下載:

$ curl -C - example.com/some-file.zip --output MyFile.zip
-C switch是恢復(fù)我們文件傳輸?shù)脑O(shè)備,但還要注意,它后面緊跟一個破折號(-)。這告訴cURL繼續(xù)文件傳輸,但是實現(xiàn)這一步,首先要查看已經(jīng)下載的部分,找到下載的最后一個字節(jié)才可以確定從何處可以恢復(fù)。

這時候我們的文件傳輸已恢復(fù),可以繼續(xù)完成下載。
指定超時


如果您希望cURL在您不做操作之后的一段時間還可以繼續(xù)之前的工作,那么可以在命令中指定超時,這特別有用,因為cURL中的某些操作默認(rèn)情況下沒有超時,所以如果您不希望其無限期掛起,則需要指定一個。
您可以使用-m switch指定執(zhí)行命令所需的最長時間。經(jīng)過指定的時間后,cURL將退出正在執(zhí)行的操作,即使它正在下載或上傳文件。
cURL會以秒為單位指定您想要的最長時間。因此,要在一分鐘后超時,該命令將如下所示:

$ curl -m 60 example.com
您可以使用cURL指定的另一種超時類型是用于鏈接的時間量。這有助于確保cURL不會花費過多的時間來嘗試連接處于脫機狀態(tài)或無法訪問的主機。

它也接受秒作為參數(shù)。該選項被寫為–connect-timeout。

  $ curl --connect-timeout 60 example.com
使用用戶名和密碼


您可以使用-u switch在cURL命令中指定用戶名和密碼。例如,如果您想通過FTP服務(wù)器進行身份驗證,則語法如下所示:

  $ curl -u username:password ftp://example.com

您可以將其用于任何協(xié)議,但是FTP通常用于諸如此類的簡單文件傳輸。
如果要下載上面的屏幕快照中顯示的文件,我們只需使用文件的完整路徑發(fā)出相同的命令。

$ curl -u username:password ftp://example.com/readme.txt


使用代理


在連接主機之前,很容易直接使用cURL來使用代理。cURL將默認(rèn)使用HTTP代理,除非您另外指定。
使用-x switch定義代理。由于在此示例中未指定協(xié)議,因此cURL將假定它是HTTP代理。

$ curl -x 192.168.1.1:8080 http://example.com
此命令將使用端口8080上的192.168.1.1作為代理連接到example.com。
您也可以將其與其他協(xié)議一起使用。下面是一個使用HTTP代理將UR cURLL到FTP服務(wù)器并檢索文件的示例。


$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt
cURL支持許多其他類型的代理和與這些代理一起使用的選項,但進一步擴展將超出本指南的范圍。請查閱cURL手冊頁,以獲取有關(guān)代理 tunneling,SOCKS代理,身份驗證等的更多信息。
分塊下載多個文件


我們已經(jīng)展示了如何停止和恢復(fù)文件傳輸,但是如果我們希望cURL僅下載文件的一部分怎么辦?這樣,我們可以下載多個塊文件。
如果您需要保持下載上限或類似限制,則可以僅下載文件的某些部分。–range標(biāo)志用于完成此操作。

大小必須以字節(jié)為單位。因此,如果我們想以100 MB的塊大小下載最新的Ubuntu .iso文件,則第一個命令將如下所示:


$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
第二個命令將需要在下一個字節(jié)提取并下載另一個100 MB的塊。


$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1

$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2
重復(fù)此過程,直到下載了所有塊。最后一步是將這些塊組合到一個文件中,這可以使用cat命令來完成。


$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso
客戶端證書


要使用證書身份驗證而不是基本身份驗證訪問服務(wù)器,可以使用–cert選項指定證書文件。

$ curl --cert path/to/cert.crt:password ftp://example.com
cURL對于證書文件的格式有很多選項。

還有更多與證書相關(guān)的選項:–cacert、–cert-status、–cert-type等。請查看手冊頁以獲取選項的完整列表。
Silent cURL

如果您不想顯示cURL的進度表和錯誤消息,則-s switch可提供該功能。它仍然會輸出您請求的數(shù)據(jù),因此,如果您希望命令100%保持靜音,則需要將輸出定向到一個文件中。
將此命令與-O flag結(jié)合使用可將文件保存在當(dāng)前的工作目錄中。這將確保cURL返回0輸出。

$ curl -s -O http://example.com
或者,您可以使用–output選項選擇保存文件的位置并指定名稱。

$ curl -s http://example.com --output index.html


獲取標(biāo)題


使用cURL來獲取遠(yuǎn)程地址的標(biāo)題非常簡單,您只需要使用-I選項即可。

$ curl -I example.com

如果將此選項與–L選項結(jié)合使用,則cURL將返回其重定向到的每個地址的headers。


$ curl -I -L example.com
多個標(biāo)題
您可以使用-H選項將header傳遞給cURL。要傳遞多個header,您只需多次使用-H選項。這是一個例子:


$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com
發(fā)布(上傳)文件
POST是網(wǎng)站接受數(shù)據(jù)的常用方式。例如,當(dāng)您在線填寫表格時,很有可能是使用POST方法從瀏覽器發(fā)送數(shù)據(jù)。要將數(shù)據(jù)以這種方式發(fā)送到網(wǎng)站,請使用-d選項。


$ curl -d 'name=geek&location=usa' http://example.com
要上傳文件而不是文本,語法應(yīng)如下所示:

  $ curl -d @filename http://example.com
根據(jù)需要使用多個-d標(biāo)志,以指定要嘗試上載的所有不同數(shù)據(jù)或文件名。
如果要將文件上傳到FTP服務(wù)器,則可以使用-T選項。


$ curl -T myfile.txt ftp://example.com/some/directory/
發(fā)送電子郵件
發(fā)送電子郵件只是將數(shù)據(jù)從您的計算機(或其他設(shè)備)上傳到電子郵件服務(wù)器。由于cURL能夠上傳數(shù)據(jù),因此我們可以使用它來發(fā)送電子郵件。有很多選項,但是這里有一個有關(guān)如何通過SMTP服務(wù)器發(fā)送電子郵件的示例:


$ curl smtp://mail.example.com --mail-from me@example.com --mail-rcpt john@domain.com –upload-file email.txt
您的電子郵件文件需要正確格式化。像這樣:


















$ cat email.txt
From: Web Administrator <me@example.com>
To: John Doe <john@domain.com>
Subject: An example email
Date: Sat, 7 Dec 2019 02:10:15



John,
Hope you have a great weekend.
-Admin
像往常一樣,可以在cURL的手冊頁中找到更詳細(xì)、更專業(yè)的選項。
閱讀電子郵件
cURL支持IMAP(和IMAPS)和POP3,兩者均可用于從郵件服務(wù)器檢索電子郵件。
像這樣使用IMAP登錄:


$ curl -u username:password imap://mail.example.com
此命令將列出可用的郵箱,但不查看任何特定的郵件。為此,請使用–X選項指定消息的UID。


$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'
cURL和wget之間的區(qū)別


有時人們會混淆cURL和wget,因為它們都能夠從服務(wù)器檢索數(shù)據(jù)。但這是他們唯一的共同點。
我們在本文中展示了cURL的功能。wget提供了一組不同的函數(shù)。wget是下載網(wǎng)站的最佳工具,并且能夠遞歸遍歷目錄和鏈接以下載整個網(wǎng)站。
要下載網(wǎng)站,請使用wget。如果使用HTTP或HTTPS以外的其他協(xié)議或用于上傳文件,請使用cURL。cURL也是從Web下載單個文件的不錯選擇,不過wget也做得很好。



關(guān)鍵字: 開封網(wǎng)站建設(shè) 晨展科技 Linux中的cURL命令

文章連接: http://m.hsjyfc.com.cn/wzjss/683.html

版權(quán)聲明:文章由 晨展科技 整理收集,來源于互聯(lián)網(wǎng)或者用戶投稿,如有侵權(quán),請聯(lián)系我們,我們會立即刪除。如轉(zhuǎn)載請保留