CURL Linux 命令:通過示例學習

成為IT工程師意味著需要執行各種任務,如檢查網絡連通性、下載文件或設置身份驗證。通常,這些任務需要不同的工具。不過,對於cURL來說就不一樣了。cURL Linux實用程序可幫助IT工程師處理大多數所需的事務。

在本教程中,您將了解cURL提供的每個命令行功能。

繼續閱讀,提升您在cURL上的技能!

先決條件

本教程包含逐步演示。要跟隨操作,請確保您擁有以下內容:

  • A Windows XP+ PC – This tutorial uses Windows 10 Enterprise edition.
  • A user account on the remote Linux SSH host with sudo permissions.

安裝cURL Linux(Ubuntu)

與其他工具一樣,要充分利用cURL,您首先需要在機器上安裝它。您可以在任何基於*nix的操作系統上安裝cURL,但它在Ubuntu上使用最為普遍。

cURL是一個命令行實用程序,允許您執行大量任務,如下所示:

  • 顯示 Windows 機器或 Linux 伺服器的各種網路配置狀態
  • 從伺服器傳輸數據
  • 支援多種協議,如 HTTP、FTP、IMAP、POP3、SCP 和 SFTP。

在您的 Ubuntu 機器上安裝 cURL:

1. 使用您喜歡的 SSH 客戶端連接到您的 Ubuntu 主機。

2. 執行以下命令,它們不會提供輸出,但會創建一個名為 ~/install_curl_demo 的目錄並切換到該目錄。此目錄將保存本教程中您將創建的所有資源。

mkdir ~/install_curl_demo
cd ~/install_curl_demo

3. 接下來,運行以下 apt update 命令來更新系統套件索引。

該命令確保 apt 套件管理器在下載任何依賴套件時可以找到正確的來源。

sudo apt update 
Updating the Ubuntu machine with the latest packages

4. 現在,運行下面的 apt install 命令來在您的機器上安裝 cURL。

sudo apt install curl
Installing cURL on the Ubuntu machine

5. 最後,運行以下命令來檢查您機器上安裝的 cURL 版本。這樣可以確保您已成功安裝了 cURL。

curl --version
Checking cURL’s version installed

網站身份驗證

不同的協議curl支援,例如FILE、FTP、HTTP、HTTPS、POP3、SCP、SFTP、TELNET等,而且您無需與任何用戶進行互動。

如果您需要使用curl命令對任何網站進行身份驗證,您需要在URL本身中指定用戶名和密碼。但如果您設置了用戶名,cURL將提示輸入密碼。

運行下面的curl命令,將[email protected]:password替換為您的用戶名和密碼,並將網站URL替換為您自己的以進行身份驗證。


curl -u [email protected]:password --basic <https://wordpress.com/posts/automateinfra.com> 
Authenticating user with password

使用原始或更改的名稱下載文件

下載文件或包可能是您作為管理員的日常例行程序的一部分。如果是這樣,cURL肯定會對您有所幫助。使用curl命令,附加-O-o選項之一,可讓您下載文件並保留原始名稱或設置不同的名稱。

運行以下命令以使用原始名稱(-O)下載NGINX包(*nginx-1.20.2.tar.gz*),或使用不同名稱(-o)下載為*mytar.gz*

# 下載具有原始名稱nginx-1.20.2.tar.gz的NGINX包
curl -O <http://nginx.org/download/nginx-1.20.2.tar.gz>
# 下載具有新名稱mytar.gz的NGINX包
curl -o mytar.gz <http://nginx.org/download/nginx-1.20.2.tar.gz>
Downloading the NGINX package

現在,運行以下命令以下載名為mytar2.gz的NGINX包。但這次,您只會看到輸出中的進度條,而不是看到很多詳細信息。

curl -# -o mytar.gz <http://nginx.org/download/nginx-1.20.2.tar.gz>
Downloading the NGINX package but only showing a progress bar

最後,執行以下ls命令以列出當前目錄中的所有文件。

ls

下面,您可以驗證存在nginx-1.20.2.tar.gzmytar.gzmytar2.gz文件。

Verifying downloaded NGINX packages

設置連接超時

快速加載的網站始終是理想的,而cURL有一種方法可以測試用戶連接到您的網站的速度。如何?通過設置連接超時,其中curl命令嘗試在特定時間範圍內連接到網站。

設置連接超時可讓您確定服務器花費多長時間回復您所發出的數據請求。

在請求超時之前,運行下面的命令嘗試連接到adamtheautomator.com網站20秒。

curl --connect-timeout 20 -I adamtheautomator.com

您可以看到-I選項讓您在網站信息輸出中包含標頭。

Connecting to a website with a connection timeout

使用GET請求檢索數據

您已經看到設置連接超時部分提供了有關網站的信息。但如果這些信息不夠,考慮發送GET請求。

運行下面的curl命令使用HTTP GET請求(–get)並從https://adamtheautomator.com網站檢索數據。

curl --get <https://adamtheautomator.com>

以下是adamtheautomator.com网站的实际源代码。

Retrieving data using the Get request

发送POST请求

您可以通过使用curl命令发送POST请求来发送数据,而不是获取数据。-d参数允许您像用户在填写HTML表单时浏览器所做的那样,将指定的数据作为POST请求发送到HTTP服务器。

运行以下curl命令将POST请求发送到ptsv2.com站点。

curl -d "name=curl" <https://ptsv2.com/t/hello>
Sending the POST request on a website

现在,在您的网络浏览器中导航到https://reqbin.com/以测试POST是否成功。

下面,您会注意到状态显示为(200 (OK),这表示请求已成功发送。

Verifying the POST request

搜索单词定义

您知道您还可以像使用词典一样使用cURL吗?是的!cURL允许您使用DICT协议搜索单词定义。许多与IT相关的术语可以使用DICT协议进行搜索,如clock,ubuntu,RDP等。

使用DICT协议的curl命令的语法如下:

curl [protocol:[dictionary_URL]:[word]

运行以下每个命令以从公共网站dict.org的字典中搜索单词定义。

# 为ubuntu搜索单词定义
curl dict://dict.org/d:ubuntu
# 为clock搜索单词定义
curl dict://dict.org/d:clock

如您所見,對於ubuntu的第一個詞義搜索沒有找到相關答案,返回了no match。但第二個搜索給出了幾個詞義定義,針對單詞clock

Searching the word definition

測試網站HTTP2協議

curl命令無疑適合於下載、上傳和驗證網站。但讓curl成為一個偉大工具的另一個原因是,您可以檢查特定URL是否支持新的HTTP/2協議

運行以下curl命令來驗證https://adamtheautomator.com/網站是否支持HTTPS協議(–http2)。

curl -I --http2 -s <https://adamtheautomator.com/> | grep HTTP

您將在輸出中看到類似下面的HTTP/2 200響應,這表示該站點使用了HTTP2協議。

Testing Website HTTP2 protocol using Curl Command

結論

cURL作為一個免費工具,擁有許多功能。在本教程中,您體驗了在Linux中使用cURL的不同第一手示例。無論是下載文件、驗證網站、發送POST或GET請求等,cURL都不會讓您失望。

為什麼不基於這些新發現的知識進一步學習呢?也許學習如何使用curl命令傳輸文件、運行命令和腳本?或者發現cURL API命令?

Source:
https://adamtheautomator.com/curl-linux/