Wgetを使用してファイルをダウンロードし、RESTAPIと対話する方法
著者はCOVID-19救済基金を選択し、 Write forDOnationsプログラムの一環として寄付を受け取りました。
序章
Wget は、ファイルをダウンロードしてRESTAPIを操作できるネットワークコマンドラインツールです。 HTTP
、HTTPS
、FTP
、およびFTPS
インターネットプロトコルをサポートします。 Wgetは不安定で遅いネットワーク接続を処理できます。 ダウンロードが失敗した場合、Wgetはファイル全体が取得されるまで試行を続けます。 Wgetでは、中断されたファイルのダウンロードを最初からやり直すことなく再開することもできます。
Wgetを使用して、追加の外部プログラムをインストールせずにRESTAPIと対話することもできます。 GET
、POST
、PUT
、および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
メソッドを送信するための構文を学習します:GET
、POST
、PUT
、および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プレースホルダーに送信して新しい投稿を作成しました。 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
を使用してPUT
リクエストをJSONプレースホルダーに送信し、このRESTAPIの最初の投稿を編集しました。 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
を使用してDELETE
リクエストをJSONプレースホルダーに送信し、このRESTAPIの最初の投稿を削除しました。 URLでmethod
をdelete
に設定し、削除する投稿を1
に設定します。
出力は次のようになります。
Output{}
このセクションでは、Wgetを使用して、ヘッダーフィールドが1つだけのGET
、POST
、 PUT
、DELETE
リクエストを送信する方法を学びました。 次のセクションでは、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コミュニティチュートリアルをご覧ください。