作者选择了COVID-19救援基金,作为Write for DOnations项目的一部分,接受捐款。
简介
Wget是一个网络命令行工具,可以让你下载文件并与REST APIs互动。它支持HTTP,HTTPS,FTP, 和FTPS 互联网协议。Wget可以处理不稳定和缓慢的网络连接。在下载失败的情况下,Wget会继续尝试,直到整个文件被检索出来。Wget还可以让你恢复被中断的文件下载,而不必从头开始。
你还可以使用Wget与REST APIs互动,而不需要安装任何额外的外部程序。你可以在终端中用单个或多个头文件提出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是什么,不要担心,你可以下载互联网上的任何文件。你只需要知道你成功地用Wget从网上下载了一个文件。
输出结果将与此类似。
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 文件,并插入你想下载的文件的URLs。在文件中插入URL后,使用wget 命令,在-i 选项后加上含有URL的.txt 文件的名称。
创建一个名为images.txt 的文件。
nano images.txt
在images.txt ,添加以下URLs。
images.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 选项一起,将所有三张图片下载到Downloads 目录中。
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 。在图片完成下载之前,按Ctrl+C 来取消下载。
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
设置最大尝试次数
你还可以设置Wget在被中断后尝试下载文件的次数,方法是通过--tries ,然后再加上尝试的次数。
通过运行下面的命令,你将尝试的次数限制在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 APIs互动
在本节中,你将使用Wget与REST APIs互动,而不必安装外部程序。你将学习发送最常用的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 字段。
要创建一个Droplet或与DigitalOcean API中的任何其他资源互动,你将需要发送两个请求头。
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
ubuntu-20-04-x64 通过上面的命令,你已经在nyc1 区域创建了一个名为Wget-example 的Droplet,内存为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 的Droplets的列表。运行下面的命令,将 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换成您的Dropletid 。
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
在上面的命令中,您将您的Dropletid 加入到URL中,以删除它。如果你在输出中看到一个204 No Content ,这意味着你成功地删除了Droplet。
在本节中,你使用Wget发送多个头信息。然后,你在你的DigitalOcean账户中创建并管理一个Droplet。
总结
在本教程中,你使用Wget在稳定和不稳定的网络条件下下载文件,并与REST API端点互动。然后你用这些知识在你的DigitalOcean账户中创建和管理一个Droplet。如果你想了解更多关于Wget的信息,请访问这个工具的手册页面。更多Linux命令行教程,请访问DigitalOcean社区教程。