如何使用Wget下载文件并与RESTAPI交互

来自菜鸟教程
跳转至:导航、​搜索

作者选择了 COVID-19 Relief Fund 作为 Write for DOnations 计划的一部分来接受捐赠。

介绍

Wget 是一个网络命令行工具,可让您下载文件并与 REST API 交互。 它支持 HTTPHTTPSFTPFTPS 互联网协议。 Wget 可以处理不稳定和缓慢的网络连接。 如果下载失败,Wget 会继续尝试,直到检索到整个文件。 Wget 还允许您恢复中断的文件下载,而无需从头开始。

您还可以使用 Wget 与 REST API 交互,而无需安装任何额外的外部程序。 您可以在终端中使用单个和多个标头发出 GETPOSTPUTDELETE HTTP 请求。

在本教程中,您将使用 Wget 下载文件、与 REST API 端点交互,以及在您的 DigitalOcean 帐户中创建和管理 Droplet。

要使用浏览器中的终端继续本教程,请单击下面的 Launch an Interactive Terminal! 按钮:

启动交互式终端!

否则,如果您想使用本地系统或远程服务器,请打开终端并在那里运行命令。

先决条件

要完成本教程,您需要:

  • Wget 已安装。 大多数 Linux 发行版都默认安装了 Wget。 要检查,请在终端中输入 wget,然后按 ENTER。 如果没有安装,会显示:command not found。 您可以通过运行以下命令来安装它:sudo apt-get install wget
  • 一个 DigitalOcean 帐户。 如果您没有,注册一个新帐户
  • DigitalOcean 个人访问令牌,您可以通过 DigitalOcean 控制面板创建它。 可以在此处找到执行此操作的说明:如何生成个人访问令牌

下载文件

在本节中,您将使用 Wget 自定义您的下载体验。 例如,您将学习下载单个文件和多个文件,在网络不稳定的情况下处理文件下载,以及在下载中断的情况下恢复下载。

首先,创建一个目录来保存您将在本教程中下载的文件:

mkdir -p DigitalOcean-Wget-Tutorial/Downloads

使用上面的命令,您创建了一个名为 DigitalOcean-Wget-Tutorial 的目录,并在其中创建了一个名为 Downloads 的子目录。 该目录及其子目录将是您存储下载文件的位置。

导航到 DigitalOcean-Wget-Tutorial 目录:

cd DigitalOcean-Wget-Tutorial

您已成功创建了存储下载文件的目录。

下载文件

要使用 Wget 下载文件,请键入 wget,后跟要下载的文件的 URL。 Wget 将下载给定 URL 中的文件并将其保存在当前目录中。

让我们使用以下命令下载 jQuery 的缩小版本:

wget https://code.jquery.com/jquery-3.6.0.min.js

如果您不知道 jQuery 是什么,请不要担心——您可以从 Internet 上下载任何可用的文件。 您只需要知道您已成功使用 Wget 从 Internet 下载文件。

输出将类似于以下内容:

Output--2021-07-21 16:25:11--  https://code.jquery.com/jquery-3.6.0.min.js
Resolving code.jquery.com (code.jquery.com)... 69.16.175.10, 69.16.175.42, 2001:4de0:ac18::1:a:1a, ...
Connecting to code.jquery.com (code.jquery.com)|69.16.175.10|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89501 (87K) [application/javascript]
Saving to: ‘jquery-3.6.0.min.js’

jquery-3.6.0.min.js 100%[===================>]  87.40K   114KB/s    in 0.8s    

2021-07-21 16:25:13 (114 KB/s) - ‘jquery-3.6.0.min.js’ saved [89501/89501]

根据上面的输出,您已经成功下载并保存了一个名为 jquery-3.6.0.min.js 的文件到您的当前目录。

您可以使用以下命令检查当前目录的内容:

ls 

输出将类似于以下内容:

OutputDownloads  jquery-3.6.0.min.js

指定下载文件的文件名

下载文件时,Wget 默认使用文件在服务器上的名称存储它。 您可以通过使用 -O 选项指定新名称来更改它。

下载您之前下载的 jQuery 文件,但这次以不同的名称保存它:

wget -O jquery.min.js https://code.jquery.com/jquery-3.6.0.min.js

使用上面的命令,您将 jQuery 文件设置为保存为 jquery.min.js 而不是 jquery-3.6.0.min.js

输出将类似于以下内容:

Output--2021-07-21 16:27:01--  https://code.jquery.com/jquery-3.6.0.min.js
Resolving code.jquery.com (code.jquery.com)... 69.16.175.10, 69.16.175.42, 2001:4de0:ac18::1:a:2b, ...
Connecting to code.jquery.com (code.jquery.com)|69.16.175.10|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89501 (87K) [application/javascript]
Saving to: ‘jquery.min.js’

jquery.min.js            100%[==================================>]  87.40K   194KB/s    in 0.4s    

2021-07-21 16:27:03 (194 KB/s) - ‘jquery.min.js’ saved [89501/89501]

根据上面的输出,您已经成功下载了 jQuery 文件并将其保存为 jquery.min.js

您可以使用 ls 命令列出当前目录的内容,您将在那里看到 jquery.min.js 文件:

ls

输出将类似于以下内容:

OutputDownloads  jquery-3.6.0.min.js  jquery.min.js

到目前为止,您已经使用 wget 将文件下载到当前目录。 接下来,您将下载到特定目录。

将文件下载到特定目录

下载文件时,Wget 默认将其存储在当前目录中。 您可以通过使用 -P 选项来指定要保存文件的目录的名称来更改它。

下载您之前下载的 jQuery 文件,但这次将其保存在 Downloads 子目录中。

wget -P Downloads/  https://code.jquery.com/jquery-3.6.0.min.js

输出将类似于以下内容:

Output--2021-07-21 16:28:50--  https://code.jquery.com/jquery-3.6.0.min.js
Resolving code.jquery.com (code.jquery.com)... 69.16.175.42, 69.16.175.10, 2001:4de0:ac18::1:a:2b, ...
Connecting to code.jquery.com (code.jquery.com)|69.16.175.42|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89501 (87K) [application/javascript]
Saving to: ‘Downloads/jquery-3.6.0.min.js’

jquery-3.6.0.min.js      100%[==================================>]  87.40K  43.6KB/s    in 2.0s    

2021-07-21 16:28:53 (43.6 KB/s) - ‘Downloads/jquery-3.6.0.min.js’ saved  [89501/89501]

注意最后一行,它说 jquery-3.6.0.min.js 文件保存在 Downloads 目录中。

如果您使用 ls Downloads 命令列出 Downloads 目录的内容,您将在那里看到 jQuery 文件:

运行 ls 命令:

ls Downloads

输出将类似于以下内容:

Outputjquery-3.6.0.min.js

关闭 Wget 的输出

默认情况下,当您下载文件时,Wget 会向终端输出大量信息。 您可以使用 -q 选项关闭所有输出。

下载 jQuery 文件,但这次没有显示任何输出:

wget -q  https://code.jquery.com/jquery-3.6.0.min.js 

你不会看到任何输出,但是如果你使用 ls 命令列出当前目录的内容,你会发现一个名为 jquery-3.6.0.min.js.1 的文件:

ls

输出将类似于以下内容:

OutputDownloads  jquery-3.6.0.min.js  jquery-3.6.0.min.js.1  jquery.min.js

在保存文件之前,Wget 会检查文件是否存在于所需的目录中。 如果是这样,Wget 会在文件末尾添加一个数字。 如果您再次运行上述命令,Wget 将创建一个名为 jquery-3.6.0.min.js.2 的文件。 每次将文件下载到已包含同名文件的目录时,此数字都会增加。

您已成功关闭 Wget 的输出,但现在无法监控下载进度。 让我们看看如何显示下载进度条。

显示下载进度条

Wget 允许您显示下载进度条,但通过使用 -q 选项和 --show-progress 选项隐藏任何其他输出。

下载 jQuery 文件,但这次只显示下载进度条:

wget -q --show-progress https://code.jquery.com/jquery-3.6.0.min.js 

输出将类似于以下内容:

Outputjquery-3.6.0.min.js.2         100%[================================================>]  87.40K   207KB/s    in 0.4s

使用ls命令查看当前目录的内容,你会发现刚才下载的文件名为jquery-3.6.0.min.js.2

从现在开始,您将在大多数后续 Wget 命令中使用 -q--show-progress 选项。

到目前为止,您只下载了一个文件。 接下来,您将下载多个文件。

下载多个文件

为了使用 Wget 下载多个文件,您需要创建一个 .txt 文件并插入您要下载的文件的 URL。 在文件中插入 URL 后,使用带有 -i 选项的 wget 命令,后跟包含 URL 的 .txt 文件的名称。

创建一个名为 images.txt 的文件:

nano images.txt

images.txt 中,添加以下 URL:

图片.txt

https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313__340.jpg
https://cdn.pixabay.com/photo/2016/01/05/17/51/maltese-1123016__340.jpg
https://cdn.pixabay.com/photo/2020/06/30/22/34/dog-5357794__340.jpg

这些 URL 链接到在 Pixabay 上发现的三张随机狗图片。 添加 URL 后,保存并关闭文件。

现在,您将使用 -i 选项以及之前学习的 -P-q--show-progress 选项将所有三个图像下载到 [ X159X] 目录:

wget -i images.txt -P Downloads/ -q --show-progress

输出将类似于以下内容:

Outputpuppy-1903313__340.jp 100%[=========================>]  26.44K  93.0KB/s    in 0.3s    
maltese-1123016__340. 100%[=========================>]  50.81K  --.-KB/s    in 0.06s   
dog-5357794__340.jpg  100%[=========================>]  30.59K  --.-KB/s    in 0.07s

如果使用ls Downloads命令列出Downloads目录下的内容,会发现刚才下载的三张图片的名称:

ls Downloads

输出将类似于以下内容:

Outputdog-5357794__340.jpg  jquery-3.6.0.min.js  maltese-1123016__340.jpg  puppy-1903313__340.jpg

限制下载速度

到目前为止,您已经下载了具有最大可用下载速度的文件。 但是,您可能希望限制下载速度以保留其他任务的资源。 您可以通过使用 --limit-rate 选项后跟 kiloBits per second 中允许的最大速度和字母 k 来限制下载速度。

images.txt文件中的第一张图片以15 kB/S的速度下载到Downloads目录下:

wget --limit-rate 15k -P Downloads/ -q --show-progress https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313__340.jpg

输出将类似于以下内容:

Outputpuppy-1903313__340.jpg.1       100%[====================================================>]  26.44K  16.1KB/s    in 1.6s

如果你使用 ls Downloads 命令查看 Downloads 目录的内容,你会看到你刚刚下载的名为 puppy-1903313__340.jpg.1 的文件。

下载已存在的文件时,Wget 会创建一个新文件,而不是覆盖现有文件。 接下来,您将覆盖下载的文件。

覆盖下载的文件

您可以使用文件名旁边的 -O 选项覆盖已下载的文件。 在下面的代码中,您将首先将 images.txt 文件中列出的第二个图像下载到当前目录,然后将其覆盖。

首先,将第二张图片下载到当前目录,并将名称设置为image2.jpg

wget -O image2.jpg -q --show-progress  https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313__340.jpg 

输出将类似于以下内容::

Outputimage2.jpg                     100%[====================================================>]  26.44K  --.-KB/s    in 0.04s

如果你使用 ls 命令查看当前目录的内容,你会看到你刚刚下载的名为 image2.jpg 的文件。

如果您希望覆盖此 image2.jpg 文件,您可以运行之前运行的相同命令:

wget -O image2.jpg -q --show-progress  https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313__340.jpg 

您可以根据需要多次运行上述命令,Wget 将下载文件并覆盖现有文件。 如果您在没有 -O 选项的情况下运行上述命令,Wget 将在您每次运行时创建一个新文件。

继续下载

到目前为止,您已经成功下载了多个文件而没有中断。 但是,如果下载中断,您可以使用 -c 选项恢复下载。

运行以下命令下载在 Pixabay 上找到的狗的随机图像。 请注意,在命令中,您已将最大速度设置为 1 KB/S。 图片下载完成前,按【X45X】【X49X】取消下载:

wget --limit-rate 1k -q --show-progress https://cdn.pixabay.com/photo/2018/03/07/19/51/grass-3206938__340.jpg 

要恢复下载,请传递 -c 选项。 请注意,仅当您在与不完整文件相同的目录中运行此命令时,这才有效:

wget -c --limit-rate 1k -q --show-progress https://cdn.pixabay.com/photo/2018/03/07/19/51/grass-3206938__340.jpg

到目前为止,您只在前台下载了文件。 接下来,您将在后台下载文件。

在后台下载

您可以使用 -b 选项在后台下载文件。

运行以下命令,在后台从 Pixabay 下载狗的随机图像:

wget -b https://cdn.pixabay.com/photo/2018/03/07/19/51/grass-3206938__340.jpg

当您在后台下载文件时,Wget 会在当前目录中创建一个名为 wget-log 的文件,并将所有输出重定向到该文件。 如果您想查看下载状态,可以使用以下命令:

tail -f wget-log

输出将类似于以下内容:

OutputResolving cdn.pixabay.com (cdn.pixabay.com)... 104.18.20.183, 104.18.21.183, 2606:4700::6812:14b7, ...
Connecting to cdn.pixabay.com (cdn.pixabay.com)|104.18.20.183|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 33520 (33K) [image/jpeg]
Saving to: ‘grass-3206938__340.jpg’

     0K .......... .......... .......... ..                   100%  338K=0.1s

2021-07-20 23:49:52 (338 KB/s) - ‘grass-3206938__340.jpg’ saved [33520/33520]

设置超时

到目前为止,我们假设您尝试从中下载文件的服务器工作正常。 但是,让我们假设服务器工作不正常。 您可以使用 Wget 首先限制等待服务器响应的时间,然后限制 Wget 尝试访问服务器的次数。

如果您想下载文件但不确定服务器是否正常工作,您可以使用 -T 选项设置超时,后跟以秒为单位的时间。

在以下命令中,您将超时设置为 5 秒:

wget -T 5 -q --show-progress https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313__340.jpg 

设置最大尝试次数

您还可以通过传递 --tries 选项和尝试次数来设置 Wget 在被中断后尝试下载文件的次数。

通过运行以下命令,您将尝试次数限制为 3

wget --tries=3 -q --show-progress https://cdn.pixabay.com/photo/2018/03/07/19/51/grass-3206938__340.jpg 

如果您想无限期地尝试,可以将 inf--tries 选项一起传递:

wget --tries=inf -q --show-progress https://cdn.pixabay.com/photo/2018/03/07/19/51/grass-3206938__340.jpg 

在本节中,您使用 Wget 下载单个文件和多个文件、恢复下载以及处理网络问题。 在下一部分中,您将学习与 REST API 端点进行交互。

与 REST API 交互

在本节中,您将使用 Wget 与 REST API 进行交互,而无需安装外部程序。 您将学习发送最常用的 HTTP 方法的语法:GETPOSTPUTDELETE

我们将使用 JSONPlaceholder 作为模拟 REST API。 JSONPlaceholder 是一个免费的在线 REST API,可用于伪造数据。 (您发送给它的请求不会影响任何数据库,也不会保存数据。)

发送 GET 请求

Wget 允许您通过运行如下所示的命令来发送 GET 请求:

wget -O- [ URL ]

在上面的命令中,-O 选项后面的 - 表示标准输出,因此 Wget 会将 URL 的输出发送到终端,而不是像前面那样发送到文件部分。 GET 是 Wget 使用的默认 HTTP 方法。

在终端窗口中运行以下命令:

wget -O- https://jsonplaceholder.typicode.com/posts?_limit=2

在上面的命令中,您使用 wgetJSON Placeholder 发送 GET 请求,以便从 REST API 检索两个帖子。

输出将类似于以下内容:

Output--2021-07-21 16:52:51--  https://jsonplaceholder.typicode.com/posts?_limit=2
Resolving jsonplaceholder.typicode.com (jsonplaceholder.typicode.com)... 104.21.10.8, 172.67.189.217, 2606:4700:3032::6815:a08, ...
Connecting to jsonplaceholder.typicode.com (jsonplaceholder.typicode.com)|104.21.10.8|:443... connected.
HTTP request sent, awaiting response... 200 OK'
Length: 600 [application/json]
Saving to: ‘STDOUT’

-                          0%[                                   ]       0  --.-KB/s               [
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  }
-                        100%[==================================>]     600  --.-KB/s    in 0s      

2021-07-21 16:52:53 (4.12 MB/s) - written to stdout [600/600]

注意它显示 HTTP request sent, awaiting response... 200 OK 的那一行,这意味着您已经成功地向 JSONPlaceholder 发送了一个 GET 请求。

如果输出过多,您可以使用您在上一节中学习的 -q 选项将输出限制为 GET 请求的结果:

wget -O- -q https://jsonplaceholder.typicode.com/posts?_limit=2

输出将类似于以下内容:

Output[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  }
]

发送 POST 请求

Wget 允许您通过运行如下所示的命令来发送 POST 请求:

wget --method==[post] -O- --body-data=[ body in json format ] --header=[ String ] [ URL ]

运行以下命令:

wget --method=post -O- -q --body-data='{"title": "Wget POST","body": "Wget POST example body","userId":1}' --header=Content-Type:application/json https://jsonplaceholder.typicode.com/posts

在上面的命令中,您使用 wgetJSON Placeholder 发送 POST 请求以创建新帖子。 您将 method 设置为 post,将 Header 设置为 Content-Type:application/json 并将以下 request body 发送给它:{"title": "Wget POST","body": "Wget POST example body","userId":1} .

输出将类似于以下内容:

Output{
  "title": "Wget POST",
  "body": "Wget POST example body",
  "userId": 1,
  "id": 101
}

发送 PUT 请求

Wget 允许您通过运行如下所示的命令来发送 PUT 请求:

wget --method==[put] -O- --body-data=[ body in json format ] --header=[ String ] [ URL ]

运行以下命令:

wget --method=put -O- -q --body-data='{"title": "Wget PUT", "body": "Wget PUT example body", "userId": 1, "id":1}' --header=Content-Type:application/json https://jsonplaceholder.typicode.com/posts/1 

在上面的命令中,您使用 wgetJSON Placeholder 发送 PUT 请求,以编辑此 REST API 中的第一篇文章。 您将 method 设置为 put,将 Header 设置为 Content-Type:application/json 并将以下 request body 发送给它:{"title": "Wget PUT", "body": "Wget PUT example body", "userId": 1, "id":1} .

输出将类似于以下内容:

Output{
  "body": "Wget PUT example body",
  "title": "Wget PUT",
  "userId": 1,
  "id": 1
}

发送 DELETE 请求

Wget 允许您通过运行如下所示的命令来发送 DELETE 请求:

wget --method==[delete] -O- [ URL ]

运行以下命令:

wget --method=delete -O- -q --header=Content-Type:application/json https://jsonplaceholder.typicode.com/posts/1

在上面的命令中,您使用 wgetJSON Placeholder 发送 DELETE 请求以删除此 REST API 中的第一个帖子。 您将method设置为delete,并将要删除的帖子设置为URL中的1

输出将类似于以下内容:

Output{}

在本节中,您学习了如何使用 Wget 发送只有一个头字段的 GETPOST PUTDELETE 请求。 在下一部分中,您将学习如何发送多个标题字段以在您的 DigitalOcean 帐户中创建和管理 Droplet。

创建和管理 DigitalOcean Droplet

在本节中,您将应用在上一节中学到的知识,并使用 Wget 在您的 DigitalOcean 帐户中创建和管理 Droplet。 但在此之前,您将学习如何在 HTTP 方法中发送多个 headers 字段。

发送多个标头的命令的语法如下所示:

wget --header=[ first header ] --header=[ second header] --header=[ N header] [ URL ]

通过根据需要多次重复 --header 选项,您可以拥有任意数量的 headers 字段。

要在 DigitalOcean API 中创建 Droplet 或与任何其他资源交互,您需要发送两个请求标头:

Content-Type: application/json
Authorization: Bearer your_personal_access_token

您已经在上一节中看到了第一个标题。 第二个标头可让您验证您的帐户。 它具有名为 Bearer 的字符串,后跟您的 DigitalOcean 帐户个人访问令牌。

运行以下命令,将 your_personal_access_token 替换为您的 DigitalOcean 个人访问令牌:

wget --method=post -O- -q --header="Content-Type: application/json" --header="Authorization: Bearer your_personal_access_token" --body-data='{"name":"Wget-example","region":"nyc1","size":"s-1vcpu-1gb","image":"ubuntu-20-04-x64","tags": ["Wget-tutorial"]}' https://api.digitalocean.com/v2/droplets

使用上面的命令,您在 nyc1 区域中创建了一个 ubuntu-20-04-x64 Droplet,名为 Wget-example,内存为 1vcpu1gb,并且您已将标签设置为 Wget-tutorial。 有关 body-data 字段中属性的更多信息,请参阅 DigitalOcean API 文档

输出将类似于以下内容:

Output{"droplet":{"id":237171073,"name":"Wget-example","memory":1024,"vcpus":1,"disk":25,"locked":false,"status":"new","kernel":null,"created_at":"2021-03-16T12:38:59Z","features":[],"backup_ids":[],"next_backup_window":null,"snapshot_ids":[],"image":{"id":72067660,"name":"20.04 (LTS) x64","distribution":"Ubuntu","slug":"ubuntu-20-04-x64","public":true,"regions":["nyc3","nyc1","sfo1","nyc2","ams2","sgp1","lon1","ams3","fra1","tor1","sfo2","blr1","sfo3"],"created_at":"2020-10-20T16:34:30Z","min_disk_size":15,"type":"base","size_gigabytes":0.52,"description":"Ubuntu 20.04 x86","tags":[],"status":"available"},"volume_ids":[],"size":{"slug":"s-1vcpu-1gb","memory":1024,"vcpus":1,"disk":25,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo3","sgp1","tor1"],"available":true,"description":"Basic"},"size_slug":"s-1vcpu-1gb","networks":{"v4":[],"v6":[]},"region":{"name":"New York 1","slug":"nyc1","features":["backups","ipv6","metadata","install_agent","storage","image_transfer"],"available":true,"sizes":["s-1vcpu-1gb","s-1vcpu-1gb-intel","s-1vcpu-2gb","s-1vcpu-2gb-intel","s-2vcpu-2gb","s-2vcpu-2gb-intel","s-2vcpu-4gb","s-2vcpu-4gb-intel","s-4vcpu-8gb","c-2","c2-2vcpu-4gb","s-4vcpu-8gb-intel","g-2vcpu-8gb","gd-2vcpu-8gb","s-8vcpu-16gb","m-2vcpu-16gb","c-4","c2-4vcpu-8gb","s-8vcpu-16gb-intel","m3-2vcpu-16gb","g-4vcpu-16gb","so-2vcpu-16gb","m6-2vcpu-16gb","gd-4vcpu-16gb","so1_5-2vcpu-16gb","m-4vcpu-32gb","c-8","c2-8vcpu-16gb","m3-4vcpu-32gb","g-8vcpu-32gb","so-4vcpu-32gb","m6-4vcpu-32gb","gd-8vcpu-32gb","so1_5-4vcpu-32gb","m-8vcpu-64gb","c-16","c2-16vcpu-32gb","m3-8vcpu-64gb","g-16vcpu-64gb","so-8vcpu-64gb","m6-8vcpu-64gb","gd-16vcpu-64gb","so1_5-8vcpu-64gb","m-16vcpu-128gb","c-32","c2-32vcpu-64gb","m3-16vcpu-128gb","m-24vcpu-192gb","g-32vcpu-128gb","so-16vcpu-128gb","m6-16vcpu-128gb","gd-32vcpu-128gb","m3-24vcpu-192gb","g-40vcpu-160gb","so1_5-16vcpu-128gb","m-32vcpu-256gb","gd-40vcpu-160gb","so-24vcpu-192gb","m6-24vcpu-192gb","m3-32vcpu-256gb","so1_5-24vcpu-192gb"]},"tags":["Wget-tutorial"]},"links":{"actions":[{"id":1164336542,"rel":"create","href":"https://api.digitalocean.com/v2/actions/1164336542"}]}}

如果您看到与上述类似的输出,则表示您已成功创建了一个 Droplet。

现在让我们获取您帐户中具有标签 Wget-tutorial 的所有 Droplet 的列表。 运行以下命令,将 your_personal_access_token 替换为您的 DigitalOcean 个人访问令牌:

wget -O- -q --header="Content-Type: application/json" --header="Authorization: Bearer your_personal_access_token" https://api.digitalocean.com/v2/droplets?tag_name=Wget-tutorial

您应该在输出中看到刚刚创建的 Droplet 的名称:

Output{"droplets":[{"id":237171073,"name":"Wget-example","memory":1024,"vcpus":1,"disk":25,"locked":false,"status":"active","kernel":null,"created_at":"2021-03-16T12:38:59Z","features":["private_networking"],"backup_ids":[],"next_backup_window":null,"snapshot_ids":[],"image":{"id":72067660,"name":"20.04 (LTS) x64","distribution":"Ubuntu","slug":"ubuntu-20-04-x64","public":true,"regions":["nyc3","nyc1","sfo1","nyc2","ams2","sgp1","lon1","ams3","fra1","tor1","sfo2","blr1","sfo3"],"created_at":"2020-10-20T16:34:30Z","min_disk_size":15,"type":"base","size_gigabytes":0.52,"description":"Ubuntu 20.04 x86","tags":[],"status":"available"},"volume_ids":[],"size":{"slug":"s-1vcpu-1gb","memory":1024,"vcpus":1,"disk":25,"transfer":1.0,"price_monthly":5.0,"price_hourly":0.00744,"regions":["ams2","ams3","blr1","fra1","lon1","nyc1","nyc2","nyc3","sfo1","sfo3","sgp1","tor1"],"available":true,"description":"Basic"},"size_slug":"s-1vcpu-1gb","networks":{"v4":[{"ip_address":"10.116.0.2","netmask":"255.255.240.0","gateway":"","type":"private"},{"ip_address":"204.48.20.197","netmask":"255.255.240.0","gateway":"204.48.16.1","type":"public"}],"v6":[]},"region":{"name":"New York 1","slug":"nyc1","features":["backups","ipv6","metadata","install_agent","storage","image_transfer"],"available":true,"sizes":["s-1vcpu-1gb","s-1vcpu-1gb-intel","s-1vcpu-2gb","s-1vcpu-2gb-intel","s-2vcpu-2gb","s-2vcpu-2gb-intel","s-2vcpu-4gb","s-2vcpu-4gb-intel","s-4vcpu-8gb","c-2","c2-2vcpu-4gb","s-4vcpu-8gb-intel","g-2vcpu-8gb","gd-2vcpu-8gb","s-8vcpu-16gb","m-2vcpu-16gb","c-4","c2-4vcpu-8gb","s-8vcpu-16gb-intel","m3-2vcpu-16gb","g-4vcpu-16gb","so-2vcpu-16gb","m6-2vcpu-16gb","gd-4vcpu-16gb","so1_5-2vcpu-16gb","m-4vcpu-32gb","c-8","c2-8vcpu-16gb","m3-4vcpu-32gb","g-8vcpu-32gb","so-4vcpu-32gb","m6-4vcpu-32gb","gd-8vcpu-32gb","so1_5-4vcpu-32gb","m-8vcpu-64gb","c-16","c2-16vcpu-32gb","m3-8vcpu-64gb","g-16vcpu-64gb","so-8vcpu-64gb","m6-8vcpu-64gb","gd-16vcpu-64gb","so1_5-8vcpu-64gb","m-16vcpu-128gb","c-32","c2-32vcpu-64gb","m3-16vcpu-128gb","m-24vcpu-192gb","g-32vcpu-128gb","so-16vcpu-128gb","m6-16vcpu-128gb","gd-32vcpu-128gb","m3-24vcpu-192gb","g-40vcpu-160gb","so1_5-16vcpu-128gb","m-32vcpu-256gb","gd-40vcpu-160gb","so-24vcpu-192gb","m6-24vcpu-192gb","m3-32vcpu-256gb","so1_5-24vcpu-192gb"]},"tags":["Wget-tutorial"],"vpc_uuid":"5ee0a168-39d1-4c60-a89c-0b47390f3f7e"}],"links":{},"meta":{"total":1}}

现在让我们使用您创建的 Droplet 的 id 并使用它来删除 Droplet。 运行以下命令,将 your_personal_access_token 替换为您的 DigitalOcean 个人访问令牌,将 your_droplet_id 替换为您的 Droplet id

wget --method=delete -O- --header="Content-Type: application/json" --header="Authorization: Bearer your_personal_access_token" https://api.digitalocean.com/v2/droplets/your_droplet_id

在上面的命令中,您将 Droplet id 添加到 URL 以将其删除。 如果您在输出中看到 204 No Content,则表示您已成功删除 Droplet。

在本节中,您使用 Wget 发送多个标头。 然后,您在 DigitalOcean 帐户中创建并管理了一个 Droplet。

结论

在本教程中,您使用 Wget 在稳定和不稳定的网络条件下下载文件并与 REST API 端点交互。 然后,您使用这些知识在您的 DigitalOcean 帐户中创建和管理 Droplet。 如果您想了解有关 Wget 的更多信息,请访问 此工具的手册页 。 如需更多 Linux 命令行教程,请访问 DigitalOcean 社区教程