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肯定会帮上大忙。附加了-O-o选项的curl命令可让您下载文件并保留原始名称或设置不同的名称。

运行以下命令以下载带有原始名称(-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命令尝试连接到一个网站。

设置连接超时可以让您确定服务器需要多长时间来回复您发出的数据请求。

运行以下命令,在20秒内尝试连接到adamtheautomator.com站点,然后超时请求。

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 参数允许您将指定的数据发送到 HTTP 服务器,就像用户在填写 HTML 表单时浏览器所做的那样。

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

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的定义搜索找不到相关答案,返回无匹配。但第二个单词返回了几个关于时钟的定义。

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/