CURL Linuxコマンド:例による学習

ITエンジニアとしての仕事には、ネットワークの接続状態の確認、ファイルのダウンロード、認証の設定など、さまざまなタスクがあります。通常、これらのタスクにはさまざまなツールが必要ですが、cURLならそんなことはありません。cURLはLinuxのユーティリティであり、ITエンジニアが必要とするほとんどのことに役立ちます。

このチュートリアルでは、cURLが提供するコマンドラインの機能について学びます。

続けて読んで、cURLのスキルを向上させましょう!

前提条件

このチュートリアルは、ステップバイステップのデモンストレーションで構成されています。進行するには、以下のものが必要です。

  • A Windows XP+ PC – This tutorial uses Windows 10 Enterprise edition.
  • A user account on the remote Linux SSH host with sudo permissions.

cURL Linux(Ubuntu)のインストール

他のツールと同様に、cURLを使用する前に、まずマシンにインストールする必要があります。cURLは*nixベースのオペレーティングシステムでインストールできますが、最も一般的にはUbuntuで使用されています。

cURLは、以下のようなさまざまなタスクを実行できるコマンドラインユーティリティです:

  • WindowsマシンまたはLinuxサーバーのさまざまなネットワーク構成の状態を表示します
  • サーバーとのデータの送受信
  • HTTP、FTP、IMAP、POP3、SCP、およびSFTPなど、複数のプロトコルをサポートしています。

UbuntuマシンにcURLをインストールするには:

1. 好きなSSHクライアントを使用してUbuntuホストに接続します。

2. 以下のコマンドを実行します。これにより~/install_curl_demoという名前のディレクトリが作成され、そのディレクトリに移動します。このディレクトリには、このチュートリアルで作成するすべてのリソースが格納されます。

mkdir ~/install_curl_demo
cd ~/install_curl_demo

3. 次に、以下のapt updateコマンドを実行して、システムパッケージインデックスを更新します。

このコマンドにより、aptパッケージマネージャーが依存パッケージをダウンロードする際に適切なソースを見つけることができます。

sudo apt update 
Updating the Ubuntu machine with the latest packages

4. 今、以下のapt installコマンドを実行して、マシンにcURLをインストールします。

sudo apt install curl
Installing cURL on the Ubuntu machine

5. 最後に、以下のコマンドを実行して、マシンにインストールされているcURLのバージョンを確認します。これにより、cURLが正常にインストールされたことが確認されます。

curl --version
Checking cURL’s version installed

ウェブサイトの認証

異なるプロトコルのcurlサポート、例えばFILE、FTP、HTTP、HTTPS、POP3、SCP、SFTP、TELNETなどがあります。ユーザーインタラクションは必要ありません。

curlコマンドを使用してWebサイトに認証する必要がある場合は、URL自体にユーザー名とパスワードを指定する必要があります。ただし、ユーザー名を設定すると、cURLがパスワードをプロンプトします。

以下のcurlコマンドを実行し、自分のユーザー名とパスワードで[email protected]:passwordを置き換え、ウェブサイトのURLを自分のものにして認証します。


curl -u [email protected]:password --basic <https://wordpress.com/posts/automateinfra.com> 
Authenticating user with password

オリジナルの名前または変更された名前でファイルをダウンロードする

ファイルやパッケージのダウンロードは、管理者としての日常業務の一部かもしれません。その場合、cURLが役に立ちます。 curlコマンドには、-Oまたは-oオプションのいずれかを追加することで、元のファイル名を保持したままダウンロードするか、別の名前を設定することができます。

以下のコマンドを実行して、元の名前(-O)として(*nginx-1.20.2.tar.gz*)NGINXパッケージをダウンロードし、別の名前(-o)として*mytar.gz*を指定します。

# 元の名前nginx-1.20.2.tar.gzでNGINXパッケージをダウンロード
curl -O <http://nginx.org/download/nginx-1.20.2.tar.gz>
# 新しい名前mytar.gzでNGINXパッケージをダウンロード
curl -o mytar.gz <http://nginx.org/download/nginx-1.20.2.tar.gz>
Downloading the NGINX package

次に、以下のコマンドを実行して、mytar2.gzという名前のNGINXパッケージをダウンロードします。しかし、今回は、出力に多くの詳細を表示する代わりに進行状況バーしか表示されません。

curl -# -o mytar.gz <http://nginx.org/download/nginx-1.20.2.tar.gz>
Downloading the NGINX package but only showing a progress bar

最後に、以下のlsコマンドを実行して、現在のディレクトリ内のすべてのファイルをリストしてください。

ls

以下では、nginx-1.20.2.tar.gzmytar.gz、およびmytar2.gzファイルが存在することを確認できます。

Verifying downloaded NGINX packages

接続タイムアウトの設定

高速なウェブサイトは常に理想的です。そして、cURLにはユーザーがウェブサイトにどれだけ速く接続できるかをテストする方法があります。それは、特定の時間内にcurlコマンドがウェブサイトに接続しようとする接続タイムアウトを設定することです。

接続タイムアウトを設定することで、サーバーがデータリクエストにどれくらいの時間をかけて応答しているかを確認できます。

以下のコマンドを実行して、リクエストが20秒間タイムアウトする前にadamtheautomator.comサイトに接続しようとしてください。

curl --connect-timeout 20 -I adamtheautomator.com

下記のように-Iオプションを使用すると、ウェブサイトの情報出力にヘッダーを含めることができます。

Connecting to a website with a connection timeout

GETリクエストを使用してデータを取得

「接続タイムアウトの設定」セクションでウェブサイトの情報が提供されるのを見てきました。しかし、その情報が十分でない場合は、GETリクエストを送信することを検討してください。

以下のcurlコマンドを実行して、HTTP GETリクエスト(–get)を使用してhttps://adamtheautomator.comのウェブサイトからデータを取得してください。

curl --get <https://adamtheautomator.com>

以下は、adamtheautomator.comウェブサイトの実際のソースです。

Retrieving data using the Get request

POSTリクエストの送信

データを取得するだけでなく、curlコマンドを使用してデータを送信することもできます。 -dパラメータを使用すると、HTMLフォームにユーザーが入力した場合と同様に、指定したデータをPOSTリクエストでHTTPサーバーに送信することができます。

以下のcurlコマンドを実行して、ptsv2.comサイトにPOSTリクエストを送信します。

curl -d "name=curl" <https://ptsv2.com/t/hello>
Sending the POST request on a website

次に、ウェブブラウザでhttps://reqbin.com/に移動して、POSTが成功したかどうかをテストします。

以下では、ステータスが(200 (OK)と表示され、リクエストが正常に送信されたことを示しています。

Verifying the POST request

単語の定義の検索

cURLを辞書のように使用することもできることを知っていましたか? はい! cURLを使用してDICTプロトコルを利用して単語の定義を検索することができます。クロック、Ubuntu、RDPなどの多くのIT関連用語をDICTプロトコルを使用して検索することができます。

DICTプロトコルを使用したcurlコマンドの構文は次のとおりです:

curl [protocol:[dictionary_URL]:[word]

以下の各コマンドを実行して、パブリックウェブサイトdict.orgで利用可能な辞書から単語の定義を検索します。

# Ubuntuの単語定義を検索
curl dict://dict.org/d:ubuntu
# クロックの単語定義を検索
curl dict://dict.org/d:clock

次のように見えます。最初の単語定義検索ubuntuでは関連する回答が見つからず、一致なしが返されました。しかし、2番目の検索ではclockという単語のいくつかの定義が返されました。

Searching the word definition

WebサイトHTTP2プロトコルのテスト

curlコマンドは、ウェブサイトのダウンロード、アップロード、認証には間違いなく適しています。しかし、curlを優れたツールにしているもう一つの要素は、特定のURLが新しいHTTP/2プロトコルをサポートしているかどうかを確認できることです。

次のcurlコマンドを実行して、https://adamtheautomator.com/ウェブサイトがHTTPSプロトコル(–http2)をサポートしているかどうかを確認します。

curl -I --http2 -s <https://adamtheautomator.com/> | grep HTTP

以下のようにHTTP/2 200の応答が出力され、それはサイトがHTTP2プロトコルを使用していることを示しています。

Testing Website HTTP2 protocol using Curl Command

結論

cURLは無料のツールですが、多くの機能が備わっています。そして、このチュートリアルでは、LinuxでcURLを使用するさまざまな実例を体験しました。ファイルのダウンロード、ウェブサイトの認証、POSTまたはGETリクエストの送信など、cURLはあなたを失望させません。

この新たな知識を基にして何かを構築してみませんか?たとえば、curlコマンドを使用してファイルを転送したり、コマンドやスクリプトを実行したりする方法を学んだり、cURL APIコマンドを発見したりすることができます。

Source:
https://adamtheautomator.com/curl-linux/