ITエンジニアとしての仕事には、ネットワークの接続状態の確認、ファイルのダウンロード、認証の設定など、さまざまなタスクがあります。通常、これらのタスクにはさまざまなツールが必要ですが、cURLならそんなことはありません。cURLはLinuxのユーティリティであり、ITエンジニアが必要とするほとんどのことに役立ちます。
このチュートリアルでは、cURLが提供するコマンドラインの機能について学びます。
続けて読んで、cURLのスキルを向上させましょう!
前提条件
このチュートリアルは、ステップバイステップのデモンストレーションで構成されています。進行するには、以下のものが必要です。
- Ubuntuマシン- このチュートリアルでは、Ubuntu 18.04にApacheがインストールされていることを前提としています。
- A Windows XP+ PC – This tutorial uses Windows 10 Enterprise edition.
- A remote Linux host – This tutorial uses an Ubuntu 18.04.5 LTS machine.
- 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という名前のディレクトリが作成され、そのディレクトリに移動します。このディレクトリには、このチュートリアルで作成するすべてのリソースが格納されます。
3. 次に、以下のapt updateコマンドを実行して、システムパッケージインデックスを更新します。
このコマンドにより、aptパッケージマネージャーが依存パッケージをダウンロードする際に適切なソースを見つけることができます。

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

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

ウェブサイトの認証
異なるプロトコルのcurlサポート、例えばFILE、FTP、HTTP、HTTPS、POP3、SCP、SFTP、TELNETなどがあります。ユーザーインタラクションは必要ありません。
curlコマンドを使用してWebサイトに認証する必要がある場合は、URL自体にユーザー名とパスワードを指定する必要があります。ただし、ユーザー名を設定すると、cURLがパスワードをプロンプトします。
以下のcurlコマンドを実行し、自分のユーザー名とパスワードで[email protected]:passwordを置き換え、ウェブサイトのURLを自分のものにして認証します。

オリジナルの名前または変更された名前でファイルをダウンロードする
ファイルやパッケージのダウンロードは、管理者としての日常業務の一部かもしれません。その場合、cURLが役に立ちます。 curl
コマンドには、-O
または-o
オプションのいずれかを追加することで、元のファイル名を保持したままダウンロードするか、別の名前を設定することができます。
以下のコマンドを実行して、元の名前(-O
)として(*nginx-1.20.2.tar.gz*
)NGINXパッケージをダウンロードし、別の名前(-o
)として*mytar.gz*
を指定します。

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

最後に、以下のls
コマンドを実行して、現在のディレクトリ内のすべてのファイルをリストしてください。
以下では、nginx-1.20.2.tar.gz、mytar.gz、およびmytar2.gzファイルが存在することを確認できます。

接続タイムアウトの設定
高速なウェブサイトは常に理想的です。そして、cURLにはユーザーがウェブサイトにどれだけ速く接続できるかをテストする方法があります。それは、特定の時間内にcurl
コマンドがウェブサイトに接続しようとする接続タイムアウトを設定することです。
接続タイムアウトを設定することで、サーバーがデータリクエストにどれくらいの時間をかけて応答しているかを確認できます。
以下のコマンドを実行して、リクエストが20
秒間タイムアウトする前にadamtheautomator.comサイトに接続しようとしてください。
下記のように-I
オプションを使用すると、ウェブサイトの情報出力にヘッダーを含めることができます。

GETリクエストを使用してデータを取得
「接続タイムアウトの設定」セクションでウェブサイトの情報が提供されるのを見てきました。しかし、その情報が十分でない場合は、GETリクエストを送信することを検討してください。
以下のcurlコマンドを実行して、HTTP GETリクエスト(–get)を使用してhttps://adamtheautomator.comのウェブサイトからデータを取得してください。
以下は、adamtheautomator.comウェブサイトの実際のソースです。

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

次に、ウェブブラウザでhttps://reqbin.com/に移動して、POSTが成功したかどうかをテストします。
以下では、ステータスが(200 (OK)と表示され、リクエストが正常に送信されたことを示しています。

単語の定義の検索
cURLを辞書のように使用することもできることを知っていましたか? はい! cURLを使用してDICTプロトコルを利用して単語の定義を検索することができます。クロック、Ubuntu、RDPなどの多くのIT関連用語をDICTプロトコルを使用して検索することができます。
DICTプロトコルを使用したcurl
コマンドの構文は次のとおりです:
以下の各コマンドを実行して、パブリックウェブサイトdict.org
で利用可能な辞書から単語の定義を検索します。
次のように見えます。最初の単語定義検索ubuntuでは関連する回答が見つからず、一致なしが返されました。しかし、2番目の検索ではclockという単語のいくつかの定義が返されました。

WebサイトHTTP2プロトコルのテスト
curlコマンドは、ウェブサイトのダウンロード、アップロード、認証には間違いなく適しています。しかし、curlを優れたツールにしているもう一つの要素は、特定のURLが新しいHTTP/2プロトコルをサポートしているかどうかを確認できることです。
次のcurlコマンドを実行して、https://adamtheautomator.com/ウェブサイトがHTTPSプロトコル(–http2)をサポートしているかどうかを確認します。
以下のようにHTTP/2 200の応答が出力され、それはサイトがHTTP2プロトコルを使用していることを示しています。

結論
cURLは無料のツールですが、多くの機能が備わっています。そして、このチュートリアルでは、LinuxでcURLを使用するさまざまな実例を体験しました。ファイルのダウンロード、ウェブサイトの認証、POSTまたはGETリクエストの送信など、cURLはあなたを失望させません。
この新たな知識を基にして何かを構築してみませんか?たとえば、curlコマンドを使用してファイルを転送したり、コマンドやスクリプトを実行したりする方法を学んだり、cURL APIコマンドを発見したりすることができます。