Wgetを使用してファイルをダウンロードし、RESTAPIと対話する方法

提供:Dev Guides
移動先:案内検索

著者はCOVID-19救済基金を選択し、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

Wget は、ファイルをダウンロードしてRESTAPIを操作できるネットワークコマンドラインツールです。 HTTPHTTPSFTP、およびFTPSインターネットプロトコルをサポートします。 Wgetは不安定で遅いネットワーク接続を処理できます。 ダウンロードが失敗した場合、Wgetはファイル全体が取得されるまで試行を続けます。 Wgetでは、中断されたファイルのダウンロードを最初からやり直すことなく再開することもできます。

Wgetを使用して、追加の外部プログラムをインストールせずにRESTAPIと対話することもできます。 GETPOSTPUT、およびDELETE HTTPリクエストは、ターミナル内で単一および複数のヘッダーを使用して行うことができます。

このチュートリアルでは、Wgetを使用してファイルをダウンロードし、REST APIエンドポイントを操作し、DigitalOceanアカウントでドロップレットを作成および管理します。

ブラウザの端末を使用してこのチュートリアルを実行するには、下の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-3.6.0.min.jsではなくjquery.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を使用すると、ダウンロードの進行状況バーを表示できますが、--show-progressオプションと一緒に-qオプションを使用すると、他の出力を非表示にできます。

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オプションを使用するようになります。

これまでのところ、ダウンロードしたファイルは1つだけです。 次に、複数のファイルをダウンロードします。

複数のファイルをダウンロードする

Wgetを使用して複数のファイルをダウンロードするには、.txtファイルを作成し、ダウンロードするファイルのURLを挿入する必要があります。 ファイル内にURLを挿入した後、wgetコマンドを使用し、-iオプションに続けて、URLを含む.txtファイルの名前を指定します。

images.txtという名前のファイルを作成します。

nano images.txt

images.txtに、次のURLを追加します。

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で見つかった犬の3つのランダムな画像にリンクしています。 URLを追加したら、ファイルを保存して閉じます。

ここで、-iオプションを、前に学習した-P-q--show-progressオプションと一緒に使用して、3つの画像すべてを[にダウンロードします。 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ディレクトリの内容を一覧表示すると、ダウンロードした3つのイメージの名前が表示されます。

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ファイルにリストされている2番目のイメージを現在のディレクトリにダウンロードしてから、それを上書きします。

まず、2番目のイメージを現在のディレクトリにダウンロードし、名前を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 

最大試行回数の設定

--triesオプションに続いて試行回数を渡すことにより、中断後にWgetがファイルのダウンロードを試行する回数を設定することもできます。

以下のコマンドを実行することにより、試行回数を3に制限します。

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

無期限に試してみたい場合は、--triesオプションと一緒にinfを渡すことができます。

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

このセクションでは、Wgetを使用して、単一のファイルと複数のファイルをダウンロードし、ダウンロードを再開し、ネットワークの問題を処理しました。 次のセクションでは、RESTAPIエンドポイントとの対話について学習します。

RESTAPIとの対話

このセクションでは、Wgetを使用して、外部プログラムをインストールせずにRESTAPIを操作します。 最も一般的に使用されるHTTPメソッドを送信するための構文を学習します:GETPOSTPUT、およびDELETE

模擬RESTAPIとしてJSONPlaceholderを使用します。 JSONPlaceholderは、偽のデータに使用できる無料のオンラインRESTAPIです。 (送信するリクエストはデータベースに影響を与えず、データは保存されません。)

GETリクエストの送信

Wgetでは、次のようなコマンドを実行してGETリクエストを送信できます。

wget -O- [ URL ]

上記のコマンドでは、-Oオプションの後の-は標準出力を意味するため、WgetはURLの出力を、前のようにファイルに送信するのではなく、端末に送信しますセクション。 GETは、Wgetが使用するデフォルトのHTTPメソッドです。

ターミナルウィンドウで次のコマンドを実行します。

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

上記のコマンドでは、wgetを使用してGETリクエストをJSONプレースホルダーに送信し、REST APIから2つの投稿を取得しました。

出力は次のようになります。

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と表示されている行に注目してください。これは、GETリクエストがJSONPlaceholderに正常に送信されたことを意味します。

出力が多すぎる場合は、前のセクションで学習した-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を使用してPOSTリクエストをJSONプレースホルダーに送信して新しい投稿を作成しました。 methodpostに設定し、HeaderContent-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を使用してPUTリクエストをJSONプレースホルダーに送信し、このRESTAPIの最初の投稿を編集しました。 methodputに設定し、HeaderContent-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を使用してDELETEリクエストをJSONプレースホルダーに送信し、このRESTAPIの最初の投稿を削除しました。 URLでmethoddeleteに設定し、削除する投稿を1に設定します。

出力は次のようになります。

Output{}

このセクションでは、Wgetを使用して、ヘッダーフィールドが1つだけのGETPOST PUTDELETEリクエストを送信する方法を学びました。 次のセクションでは、DigitalOceanアカウントでドロップレットを作成および管理するために、複数のヘッダーフィールドを送信する方法を学習します。

DigitalOceanドロップレットの作成と管理

このセクションでは、前のセクションで学んだことを適用し、Wgetを使用してDigitalOceanアカウントでドロップレットを作成および管理します。 ただし、その前に、HTTPメソッドで複数のheadersフィールドを送信する方法を学習します。

複数のヘッダーを送信するコマンドの構文は次のようになります。

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

--headerオプションを必要な回数繰り返すことにより、headersフィールドをいくつでも持つことができます。

ドロップレットを作成したり、DigitalOcean APIで他のリソースとやり取りしたりするには、2つのリクエストヘッダーを送信する必要があります。

Content-Type: application/json
Authorization: Bearer your_personal_access_token

前のセクションで最初のヘッダーをすでに見ました。 2番目のヘッダーは、アカウントを認証できるようにするものです。 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

上記のコマンドを使用して、[X67X]および1gbのメモリを備えたWget-exampleという名前のnyc1領域にubuntu-20-04-x64ドロップレットを作成しました。タグをWget-tutorialに設定しました。 body-dataフィールドの属性の詳細については、DigitalOceanAPIドキュメントを参照してください。

出力は次のようになります。

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"}]}}

上記のような出力が表示された場合は、ドロップレットが正常に作成されたことを意味します。

次に、タグWget-tutorialを持つアカウント内のすべてのドロップレットのリストを取得しましょう。 次のコマンドを実行し、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

作成したばかりのドロップレットの名前が出力に表示されます。

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}}

次に、作成したドロップレットのidを取得し、それを使用してドロップレットを削除しましょう。 次のコマンドを実行し、your_personal_access_tokenをDigitalOceanパーソナルアクセストークンに置き換え、your_droplet_idをドロップレット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

上記のコマンドで、ドロップレットidをURLに追加して削除しました。 出力に204 No Contentが表示されている場合は、ドロップレットの削除に成功したことを意味します。

このセクションでは、Wgetを使用して複数のヘッダーを送信しました。 次に、DigitalOceanアカウントでドロップレットを作成して管理しました。

結論

このチュートリアルでは、Wgetを使用して、安定したネットワーク状態と不安定なネットワーク状態でファイルをダウンロードし、RESTAPIエンドポイントと対話しました。 次に、この知識を使用して、DigitalOceanアカウントでドロップレットを作成および管理しました。 Wgetの詳細については、このツールのマニュアルページにアクセスしてください。 その他のLinuxコマンドラインチュートリアルについては、DigitalOceanコミュニティチュートリアルをご覧ください。