作者选择了 COVID-19 Relief Fund 作为 Write for DOnations 计划的一部分来接受捐赠。
介绍
Wget 是一个网络命令行工具,可让您下载文件并与 REST API 交互。 它支持 HTTP
、HTTPS
、FTP
和 FTPS
互联网协议。 Wget 可以处理不稳定和缓慢的网络连接。 如果下载失败,Wget 会继续尝试,直到检索到整个文件。 Wget 还允许您恢复中断的文件下载,而无需从头开始。
您还可以使用 Wget 与 REST API 交互,而无需安装任何额外的外部程序。 您可以在终端中使用单个和多个标头发出 GET
、POST
、PUT
和 DELETE
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
方法的语法:GET
、POST
、PUT
和 DELETE
。
我们将使用 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
在上面的命令中,您使用 wget
向 JSON 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
在上面的命令中,您使用 wget
向 JSON 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
在上面的命令中,您使用 wget
向 JSON 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
在上面的命令中,您使用 wget
向 JSON Placeholder 发送 DELETE
请求以删除此 REST API 中的第一个帖子。 您将method
设置为delete
,并将要删除的帖子设置为URL中的1
。
输出将类似于以下内容:
Output{}
在本节中,您学习了如何使用 Wget 发送只有一个头字段的 GET
、POST
、 PUT
和 DELETE
请求。 在下一部分中,您将学习如何发送多个标题字段以在您的 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
,内存为 1vcpu
和 1gb
,并且您已将标签设置为 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 社区教程。