1. 
          

          1. 新聞動(dòng)態(tài)

            Linux 下命令行CURL的15種常見(jiàn)示例!

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

            來(lái)自公眾號:CU技術(shù)社區

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

            1. 什么是cURL命令?

            2. 下載文件

            3. 遵循重定向

            4. 停止并繼續下載

            5. 指定超時(shí)

            6. 使用用戶(hù)名和密碼

            7. 使用代理

            8. 分塊下載大文件

            9. 客戶(hù)端證書(shū)

            10. Silent cURL

            11. 獲取標題

            12. 多個(gè)headers

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

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

            15. 閱讀電子郵件

            16. cURL和wget之間的區別

            什么是cURL命令?


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


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

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

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

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

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

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

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

            如果您沒(méi)有這樣做,則cURL會(huì )將在線(xiàn)文件的二進(jìn)制輸出發(fā)送到您的終端,這可能會(huì )導致其發(fā)生故障。
            這是我們開(kāi)始下載500KB Word文檔時(shí)的樣子。


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


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

            $ curl -L www.likegeeks.com

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


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

            我們的下載已經(jīng)開(kāi)始,但是被ctrl + c中斷了,現在讓我們使用以下語(yǔ)法恢復下載:

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

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


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

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

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

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


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

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

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

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


            使用代理


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

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


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


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

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


            $ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
            第二個(gè)命令將需要在下一個(gè)字節提取并下載另一個(gè)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
            重復此過(guò)程,直到下載了所有塊。最后一步是將這些塊組合到一個(gè)文件中,這可以使用cat命令來(lái)完成。


            $ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso
            客戶(hù)端證書(shū)


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

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

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

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

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

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


            獲取標題


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

            $ curl -I example.com

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


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


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


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

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


            $ curl -T myfile.txt ftp://example.com/some/directory/
            發(fā)送電子郵件
            發(fā)送電子郵件只是將數據從您的計算機(或其他設備)上傳到電子郵件服務(wù)器。由于cURL能夠上傳數據,因此我們可以使用它來(lái)發(fā)送電子郵件。有很多選項,但是這里有一個(gè)有關(guān)如何通過(guò)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的手冊頁(yè)中找到更詳細、更專(zhuān)業(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之間的區別


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



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

            文章連接: http://www.gostscript.com/wzjss/683.html

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

            双腿国产亚洲精品无码不卡|国产91精品无码麻豆|97久久久久久久极品|无码人妻少妇久久中文字幕
                1.