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

作者选择了 COVID-19 救援基金作为 Write for Donations计划的一部分接受捐款。

介绍

Wget是一个网络命令行工具,允许您下载文件并与REST API进行交互。它支持互联网协议HTTP,HTTPS,FTPFTPS。Wget可以处理不稳定和缓慢的网络连接。在下载失败的情况下,Wget将继续尝试直到整个文件被恢复。

您还可以使用 Wget 与 REST API 进行交互,而无需安装任何额外的外部程序,您可以直接在终端中执行GET,POST,PUTDELETE``HTTP请求。

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

您可以使用本地系统或远程服务器打开终端并在那里运行命令。

前提条件

要完成本教程,您将需要:

  • Wget已安装. 大多数Linux发行版都默认安装了Wget。 要检查,请在您的终端键入‘wget’并按‘ENTER’。 如果未安装,将显示:‘command not found’。 您可以通过运行以下命令来安装它: sudo apt-get install wget.
  • A DigitalOcean account. 如果您没有一个, 注册新帐户。 A DigitalOcean Personal Access Token,您可以通过DigitalOcean控制面板创建它。 此处可以找到该操作的说明: 如何生成个人访问代码

下载文件

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

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

1mkdir -p DigitalOcean-Wget-Tutorial/Downloads

使用上述命令,您创建了一个名为DigitalOcean-Wget-Tutorial的目录,并在其内部,您创建了一个名为下载的子目录。

导航到DigitalOcean-Wget-Tutorial目录:

1cd DigitalOcean-Wget-Tutorial

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

(下载一个文件)

要使用Wget下载文件,请键入wget,然后是您想要下载的文件的URL。

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

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

不要担心如果你不知道jQuery是什么 - 你可能已经下载了任何在互联网上可用的文件. 所有你需要知道的是,你成功使用Wget从互联网上下载文件。

结果将看起来像这样:

 1[secondary_label Output]
 2--2021-07-21 16:25:11--  https://code.jquery.com/jquery-3.6.0.min.js
 3Resolving code.jquery.com (code.jquery.com)... 69.16.175.10, 69.16.175.42, 2001:4de0:ac18::1:a:1a, ...
 4Connecting to code.jquery.com (code.jquery.com)|69.16.175.10|:443... connected.
 5HTTP request sent, awaiting response... 200 OK
 6Length: 89501 (87K) [application/javascript]
 7Saving to: ‘jquery-3.6.0.min.js’
 8
 9jquery-3.6.0.min.js 100%[===================>]  87.40K 114KB/s in 0.8s    
10
112021-07-21 16:25:13 (114 KB/s) - ‘jquery-3.6.0.min.js’ saved [89501/89501]

根据上述输出,您已成功下载并将名为 `jquery-3.6.0.min.js’的文件保存到当前目录中。

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

1ls

结果将看起来像这样:

1[secondary_label Output]
2Downloads jquery-3.6.0.min.js

指定下载的文件的文件名称

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

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

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

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

结果将看起来像这样:

 1[secondary_label Output]
 2--2021-07-21 16:27:01--  https://code.jquery.com/jquery-3.6.0.min.js
 3Resolving code.jquery.com (code.jquery.com)... 69.16.175.10, 69.16.175.42, 2001:4de0:ac18::1:a:2b, ...
 4Connecting to code.jquery.com (code.jquery.com)|69.16.175.10|:443... connected.
 5HTTP request sent, awaiting response... 200 OK
 6Length: 89501 (87K) [application/javascript]
 7Saving to: ‘jquery.min.js’
 8
 9jquery.min.js 100%[==================================>]  87.40K 194KB/s in 0.4s    
10
112021-07-21 16:27:03 (194 KB/s) - ‘jquery.min.js’ saved [89501/89501]

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

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

1ls

结果将看起来像这样:

1[secondary_label Output]
2Downloads jquery-3.6.0.min.js jquery.min.js

到目前为止,你已经使用wget下载文件到当前目录. 接下来,你将下载到一个特定的目录。

** 将文件下载到特定目录**

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

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

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

结果将看起来像这样:

 1[secondary_label Output]
 2--2021-07-21 16:28:50--  https://code.jquery.com/jquery-3.6.0.min.js
 3Resolving code.jquery.com (code.jquery.com)... 69.16.175.42, 69.16.175.10, 2001:4de0:ac18::1:a:2b, ...
 4Connecting to code.jquery.com (code.jquery.com)|69.16.175.42|:443... connected.
 5HTTP request sent, awaiting response... 200 OK
 6Length: 89501 (87K) [application/javascript]
 7Saving to: Downloads/jquery-3.6.0.min.js
 8
 9jquery-3.6.0.min.js 100%[==================================>]  87.40K 43.6KB/s in 2.0s    
10
112021-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文件被保存到下载目录中。

如果您使用下载命令列出下载目录的内容,您将看到 jQuery 文件:

运行ls命令:

1ls Downloads

结果将看起来像这样:

1[secondary_label Output]
2jquery-3.6.0.min.js

** 关闭 Wget 的输出**

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

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

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

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

1ls

结果将看起来像这样:

1[secondary_label Output]
2Downloads 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选项与--显示进度选项一起隐藏任何其他输出。

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

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

结果将看起来像这样:

1[secondary_label Output]
2jquery-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后,使用wget命令,然后使用-i选项,然后是包含URL的.txt文件的名称。

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

1nano images.txt

images.txt中,添加以下 URL:

1[label images.txt]
2https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313__340.jpg
3https://cdn.pixabay.com/photo/2016/01/05/17/51/maltese-1123016__340.jpg
4https://cdn.pixabay.com/photo/2020/06/30/22/34/dog-5357794__340.jpg

这些 URL 链接到 Pixabay上发现的三张狗的随机图像。

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

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

结果将看起来像这样:

1[secondary_label Output]
2puppy-1903313__340.jp 100%[=========================>]  26.44K 93.0KB/s in 0.3s    
3maltese-1123016__340. 100%[=========================>]  50.81K  --.-KB/s in 0.06s   
4dog-5357794__340.jpg 100%[=========================>]  30.59K  --.-KB/s in 0.07s

如果你使用下载命令列出下载目录的内容,你会发现你刚刚下载的三个图像的名称:

1ls Downloads

结果将看起来像这样:

1[secondary_label Output]
2dog-5357794__340.jpg jquery-3.6.0.min.js maltese-1123016__340.jpg puppy-1903313__340.jpg

** 限制下载速度**

到目前为止,你已经下载了最多可用的下载速度的文件,但是,你可能想要限制下载速度以保护其他任务的资源。你可以通过使用--limit-rate选项来限制下载速度,然后使用k字母和k字母来限制下载速度。

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

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

结果将看起来像这样:

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

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

当下载已存在的文件时,Wget 会创建一个新的文件,而不是重写现有文件。

** 重写下载的文件**

在下面的代码中,您将首先将images.txt文件中列出的第二张图像下载到当前目录,然后将其重写。

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

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

结果将看起来像这样:

1[secondary_label Output]
2image2.jpg 100%[====================================================>]  26.44K  --.-KB/s in 0.04s

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

如果您想重写此image2.jpg文件,您可以运行您之前运行的相同命令:

1wget -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。

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

要恢复下载,请通过 -c 选项. 请注意,如果您在同一个目录中运行该命令,则此操作只会起作用:

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

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

** 在背景下下载**

您可以通过使用 -b 选项下载背景中的文件。

运行下面的命令,从 Pixabay下载一个狗的随机图像:

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

当您在背景下下载文件时,Wget 在当前目录中创建一个名为wget-log的文件,并将所有输出重定向到该文件。

1tail -f wget-log

结果将看起来像这样:

 1[secondary_label Output]
 2Resolving cdn.pixabay.com (cdn.pixabay.com)... 104.18.20.183, 104.18.21.183, 2606:4700::6812:14b7, ...
 3Connecting to cdn.pixabay.com (cdn.pixabay.com)|104.18.20.183|:443... connected.
 4HTTP request sent, awaiting response... 200 OK
 5Length: 33520 (33K) [image/jpeg]
 6Saving to: ‘grass-3206938__340.jpg’
 7
 8     0K .......... .......... .......... .. 100%  338K=0.1s
 9
102021-07-20 23:49:52 (338 KB/s) - ‘grass-3206938__340.jpg’ saved [33520/33520]

** 设置一个时限**

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

如果您想下载文件,但不确定服务器是否正常工作,您可以使用-T选项设置时间缩短,然后以秒数表示时间。

在下列命令中,您将时隔设置为5秒:

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

** 设置最大尝试次数**

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

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

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

如果你想尝试无限期,你可以通过Inf旁边的--tries选项:

1wget --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方法的语法:GET,POST,PUTDELETE

我们将使用 JSONPlaceholder作为模糊的REST API. JSONPlaceholder是一个免费的在线REST API,您可以使用用于伪造数据。

** 发送 GET 请求**

Wget 允许您通过运行一个看起来如下命令来发送GET请求:

1wget -O- [ URL ]

在上述命令中,在-O选项之后的-指的是标准输出,所以Wget会将URL的输出发送到终端,而不是发送到文件,就像你在上一节所做的。

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

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

在上述命令中,您使用wgetGET请求发送到 JSON Placeholder以从REST API中获取两个帖子。

结果将看起来像这样:

 1[secondary_label Output]
 2--2021-07-21 16:52:51--  https://jsonplaceholder.typicode.com/posts?_limit=2
 3Resolving jsonplaceholder.typicode.com (jsonplaceholder.typicode.com)... 104.21.10.8, 172.67.189.217, 2606:4700:3032::6815:a08, ...
 4Connecting to jsonplaceholder.typicode.com (jsonplaceholder.typicode.com)|104.21.10.8|:443... connected.
 5HTTP request sent, awaiting response... 200 OK'
 6Length: 600 [application/json]
 7Saving to: ‘STDOUT’
 8
 9-                          0%[                                   ]       0  --.-KB/s               [
10  {
11    "userId": 1,
12    "id": 1,
13    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
14    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
15  },
16  {
17    "userId": 1,
18    "id": 2,
19    "title": "qui est esse",
20    "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"
21  }
22-                        100%[==================================>]     600  --.-KB/s in 0s      
23
242021-07-21 16:52:53 (4.12 MB/s) - written to stdout [600/600]

请注意该行说HTTP 请求发送,等待响应... 200 OK,这意味着您已成功发送到 JSONPlaceholder 的GET请求。

如果输出太多了,你可以使用你在上一节中学到的 -q 选项来限制输出到 GET 请求的结果:

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

结果将看起来像这样:

 1[secondary_label Output]
 2[
 3  {
 4    "userId": 1,
 5    "id": 1,
 6    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
 7    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
 8  },
 9  {
10    "userId": 1,
11    "id": 2,
12    "title": "qui est esse",
13    "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"
14  }
15]

发送邮件请求

Wget 允许您通过运行一个看起来如下命令来发送POST请求:

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

运行以下命令:

1wget --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

在上面的命令中,您使用wgetPOST请求发送到 JSON Placeholder以创建一个新帖子.您将method设置为post,Header设置为Content-Type:application/json,并将以下请求体发送到它:Wget POST,body:Wget POST示例体,userId:1}。

结果将看起来像这样:

1[secondary_label Output]
2{
3  "title": "Wget POST",
4  "body": "Wget POST example body",
5  "userId": 1,
6  "id": 101
7}

** 发送 PUT 请求**

Wget 允许您通过运行一个看起来如下命令来发送PUT请求:

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

运行以下命令:

1wget --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

在上面的命令中,你用「wget」向 JSON Placeholder发送一个「PUT」请求,以编辑这个REST API中的第一个帖子。你将「method」设置为「put」、「Header」设置为「Content-Type:application/json」并发送以下的「request body」到它:`{"title": "Wget PUT", "body": "Wget PUT 示例体", "userId": 1, "id":1}。

结果将看起来像这样:

1[secondary_label Output]
2{
3  "body": "Wget PUT example body",
4  "title": "Wget PUT",
5  "userId": 1,
6  "id": 1
7}

** 发送删除请求**

Wget 允许您通过运行一个看起来如下命令来发送DELETE请求:

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

运行以下命令:

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

在上面的命令中,你用wget发送一个DELETE请求到JSON Placeholder(https://jsonplaceholder.typicode.com)删除这个REST API中的第一个帖子,你将方法设置为删除,并在URL中设置要删除的帖子为1

结果将看起来像这样:

1[secondary_label Output]
2{}

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

创建和管理数字海洋滴

在本节中,您将应用您在上一节中学到的内容,并使用Wget在您的DigitalOcean帐户中创建和管理Droplet,但在您这样做之前,您将学习如何用HTTP方法发送多个标题字段。

发送多个标题的命令语法看起来像这样:

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

您可以有尽可能多的标题字段,通过重复 - 标题选项,只要您需要。

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

1Content-Type: application/json
2Authorization: Bearer your_personal_access_token

您已经在上一节看到第一个标题了。第二个标题是允许您验证您的帐户。它有一个名为承包者的字符串,其次是您的DigitalOcean帐户个人访问代码。

运行以下命令,以您的 DigitalOcean 个人访问代码代替 your_personal_access_token:

1wget --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区域中创建了一个名为Wget-exampleubuntu-20-04-x64 Droplet,具有1vcpu1gb内存,并将标签设置为Wget-tutorial

结果将看起来像这样:

1[secondary_label Output]
2{"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的Dropplets。 运行以下命令,以您的DigitalOcean个人访问代码代替your_personal_access_token:

1wget -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的名称:

1[secondary_label Output]
2{"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。 运行以下命令,以你的DigitalOcean个人访问代码代替your_personal_access_token,以你的Droplet id代替your_droplet_id:

1wget --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 无内容',这意味着您成功删除 Droplet。

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

结论

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

Published At
Categories with 技术
comments powered by Disqus