[Linux] curlコマンドでよく使うオプションまとめ
curlは、LinuxでHTTPリクエストを送信するためのコマンドラインツールです。
よく使われるオプションには以下があります。
-X
:HTTPメソッドを指定(例:-X POST
)-d
:POSTデータを送信(例:-d "key=value"
)-H
:HTTPヘッダーを追加(例:-H "Content-Type: application/json"
)-o
:レスポンスをファイルに保存(例:-o output.txt
)-I
:ヘッダーのみを取得-L
:リダイレクトを追跡-u
:ユーザー名とパスワードを指定(例:-u user:password
)-k
:SSL証明書の検証を無効化
- curlコマンドの基本的な使い方
- よく使うオプションの詳細
- レスポンスの処理方法
- APIとの連携手法
- ファイルのアップロードとダウンロード方法
基本的なcurlコマンドの使い方
curl
は、URLを介してデータを転送するためのコマンドラインツールです。
主にHTTP、HTTPS、FTPなどのプロトコルを使用して、リモートサーバーと通信する際に利用されます。
基本的な使い方は非常にシンプルで、以下のようにコマンドを入力するだけです。
curl [オプション] [URL]
例えば、特定のウェブサイトのコンテンツを取得したい場合は、次のように入力します。
curl https://www.example.com
このコマンドを実行すると、指定したURLのHTMLコンテンツが標準出力に表示されます。
curl
は、データの取得だけでなく、データの送信やファイルのアップロード、APIとの連携など、さまざまな用途に対応しています。
オプションを組み合わせることで、より柔軟な操作が可能になります。
よく使うcurlオプション
curl
には多くのオプションがあり、用途に応じて使い分けることができます。
以下に、よく使われるオプションをまとめました。
オプション | 説明 |
---|---|
-X | HTTPメソッド を指定します。デフォルトはGETですが、POSTやPUTなども指定可能です。 |
-d | データを送信する際に使用します。POSTリクエストでデータを送る場合に便利です。 |
-H | HTTPヘッダーを追加します。APIリクエストなどで特定のヘッダーを設定する際に使用します。 |
-o | レスポンスを指定したファイルに保存します。標準出力ではなくファイルに出力したい場合に便利です。 |
-I | レスポンスのヘッダーのみを取得します。サーバーの情報を確認したいときに役立ちます。 |
-L | リダイレクトを追跡します。URLがリダイレクトされる場合に、最終的なレスポンスを取得できます。 |
-u | 認証情報を指定します。Basic認証などでユーザー名とパスワードを送信する際に使用します。 |
-k | SSL証明書の検証を無効化します。自己署名証明書を使用しているサーバーに接続する際に便利です。 |
これらのオプションを組み合わせることで、さまざまなリクエストを柔軟に行うことができます。
例えば、POSTメソッド
でデータを送信し、レスポンスをファイルに保存する場合は、以下のようにコマンドを入力します。
curl -X POST -d "param1=value1¶m2=value2" -o response.txt https://www.example.com/api
このコマンドでは、指定したURLにデータをPOSTし、レスポンスをresponse.txt
というファイルに保存します。
レスポンスの処理
curl
を使用してリクエストを送信した後、サーバーからのレスポンスを適切に処理することが重要です。
以下に、レスポンスの処理方法をいくつか紹介します。
レスポンスの標準出力
デフォルトでは、curl
はサーバーからのレスポンスを標準出力に表示します。
例えば、以下のコマンドを実行すると、指定したURLのHTMLコンテンツがターミナルに表示されます。
curl https://www.example.com
この場合、ウェブページの内容がそのまま出力されます。
レスポンスをファイルに保存
レスポンスをファイルに保存したい場合は、-o
オプションを使用します。
以下のコマンドでは、レスポンスをresponse.html
というファイルに保存します。
curl -o response.html https://www.example.com
このコマンドを実行すると、指定したURLの内容がresponse.html
に書き込まれます。
レスポンスのステータスコードを確認
レスポンスのステータスコードを確認するには、-I
オプションを使用してヘッダーのみを取得するか、-o
オプションと-w
オプションを組み合わせて使用します。
以下のコマンドは、レスポンスのステータスコードを表示します。
curl -o /dev/null -w "%{http_code}" https://www.example.com
このコマンドでは、レスポンスのボディは出力せず、HTTPステータスコードのみが表示されます。
レスポンスヘッダーの取得
レスポンスヘッダーを取得するには、-I
オプションを使用します。
以下のコマンドを実行すると、指定したURLのレスポンスヘッダーが表示されます。
curl -I https://www.example.com
このコマンドでは、サーバーからのレスポンスヘッダーがターミナルに出力され、サーバーの情報やコンテンツタイプなどを確認できます。
これにより、リクエストの結果をより詳細に分析することが可能になります。
認証とセキュリティ
curl
を使用してAPIやウェブサービスにアクセスする際、認証やセキュリティの設定が必要になることがあります。
以下に、一般的な認証方法やセキュリティ設定について説明します。
Basic認証の使用方法
Basic認証を使用する場合、-u
オプションを使ってユーザー名とパスワードを指定します。
以下のコマンドは、Basic認証を用いてリクエストを送信する例です。
curl -u username:password https://www.example.com/protected
このコマンドでは、指定したURLに対してBasic認証を行い、認証が成功すればリソースにアクセスできます。
Bearerトークンの使用方法
Bearerトークンを使用する場合、-H
オプションを使ってAuthorizationヘッダーを追加します。
以下のコマンドは、Bearerトークンを用いてAPIにアクセスする例です。
curl -H "Authorization: Bearer your_token" https://api.example.com/data
このコマンドでは、指定したトークンを使用してAPIにアクセスし、認証が成功すればデータを取得できます。
SSL証明書の検証を無効化する方法
自己署名証明書を使用しているサーバーに接続する場合、SSL証明書の検証を無効化することができます。
-k
オプションを使用することで、SSL証明書の検証をスキップします。
curl -k https://self-signed.example.com
このコマンドを実行すると、SSL証明書のエラーが無視され、接続が行われます。
ただし、セキュリティ上のリスクがあるため、信頼できる環境でのみ使用することが推奨されます。
クッキーの送信と保存
クッキーを送信するには、-b
オプションを使用します。
また、クッキーを保存するには、-c
オプションを使用します。
以下のコマンドは、クッキーを送信し、レスポンスのクッキーを保存する例です。
curl -b cookies.txt -c new_cookies.txt https://www.example.com
このコマンドでは、cookies.txt
に保存されたクッキーを送信し、サーバーからのレスポンスで新たに取得したクッキーをnew_cookies.txt
に保存します。
これにより、セッション管理や認証の維持が可能になります。
ファイルのアップロードとダウンロード
curl
は、ファイルのアップロードやダウンロードを簡単に行うことができる強力なツールです。
以下に、ファイルのアップロードとダウンロードの方法を説明します。
ファイルをアップロードする方法
ファイルをアップロードするには、-F
オプションを使用します。
このオプションを使うことで、フォームデータとしてファイルを送信できます。
以下のコマンドは、file.txt
というファイルを指定したURLにアップロードする例です。
curl -F "file=@file.txt" https://www.example.com/upload
このコマンドを実行すると、file.txt
が指定したURLにアップロードされます。
ファイルをダウンロードする方法
ファイルをダウンロードするには、-o
オプションを使用して、保存先のファイル名を指定します。
以下のコマンドは、指定したURLからファイルをダウンロードする例です。
curl -o downloaded_file.txt https://www.example.com/file.txt
このコマンドを実行すると、指定したURLのファイルがdownloaded_file.txt
という名前で保存されます。
複数ファイルのアップロード
複数のファイルを同時にアップロードする場合も、-F
オプションを使ってそれぞれのファイルを指定します。
以下のコマンドは、file1.txt
とfile2.txt
を同時にアップロードする例です。
curl -F "file1=@file1.txt" -F "file2=@file2.txt" https://www.example.com/upload
このコマンドを実行すると、両方のファイルが指定したURLにアップロードされます。
大容量ファイルのダウンロード時の注意点
大容量ファイルをダウンロードする際は、ネットワークの安定性や接続のタイムアウトに注意が必要です。
--limit-rate
オプションを使用して、ダウンロード速度を制限することができます。
以下のコマンドは、ダウンロード速度を1MB/sに制限する例です。
curl --limit-rate 1M -O https://www.example.com/largefile.zip
このコマンドを実行すると、指定したURLから大容量ファイルを1MB/sの速度でダウンロードします。
また、-C -
オプションを使用することで、途中で中断したダウンロードを再開することも可能です。
curl -C - -O https://www.example.com/largefile.zip
このように、curl
を使うことで、ファイルのアップロードやダウンロードを効率的に行うことができます。
APIとの連携
curl
は、REST APIとの連携に非常に便利なツールです。
APIにリクエストを送信し、データを取得したり、操作を行ったりすることができます。
以下に、APIとの連携に関する具体的な方法を説明します。
REST APIにリクエストを送信する
REST APIにリクエストを送信するには、curl
を使用してHTTPメソッド
を指定します。
例えば、GETリクエストを送信する場合は、以下のようにします。
curl -X GET https://api.example.com/resource
このコマンドを実行すると、指定したリソースのデータが取得されます。
POSTリクエストを送信する場合は、-X POST
オプションを使用します。
curl -X POST https://api.example.com/resource
JSONデータを送信する
APIにJSONデータを送信する場合、-H
オプションでContent-Typeを指定し、-d
オプションでデータを送信します。
以下のコマンドは、JSONデータをPOSTリクエストで送信する例です。
curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' https://api.example.com/resource
このコマンドを実行すると、指定したJSONデータがAPIに送信されます。
APIのレスポンスを解析する
APIからのレスポンスは通常、JSON形式で返されます。
curl
を使用してレスポンスを取得した後、jq
などのツールを使って解析することができます。
以下のコマンドは、APIからのレスポンスをjq
で整形して表示する例です。
curl -s https://api.example.com/resource | jq .
このコマンドでは、-s
オプションを使用して進行状況を非表示にし、jq
でレスポンスを整形して見やすく表示します。
APIキーを使用した認証
多くのAPIでは、APIキーを使用して認証を行います。
APIキーは、リクエストのヘッダーに含めることが一般的です。
以下のコマンドは、APIキーを使用してリクエストを送信する例です。
curl -H "Authorization: Api-Key your_api_key" https://api.example.com/resource
このコマンドを実行すると、指定したAPIキーを使用してリソースにアクセスします。
APIキーは、セキュリティ上の理由から、外部に漏れないように注意して管理する必要があります。
これらの方法を活用することで、curl
を使ってAPIとの連携をスムーズに行うことができます。
応用例
curl
は多機能なツールであり、さまざまなシチュエーションで活用できます。
以下に、いくつかの応用例を紹介します。
プロキシサーバーを経由してリクエストを送信
プロキシサーバーを経由してリクエストを送信するには、-x
オプションを使用します。
以下のコマンドは、指定したプロキシサーバーを経由してリクエストを送信する例です。
curl -x http://proxy.example.com:8080 https://www.example.com
このコマンドを実行すると、指定したプロキシサーバーを通じてリクエストが送信されます。
タイムアウトを設定してリクエストを送信
リクエストのタイムアウトを設定するには、--connect-timeout
オプションを使用します。
以下のコマンドは、接続タイムアウトを5秒に設定する例です。
curl --connect-timeout 5 https://www.example.com
このコマンドを実行すると、5秒以内に接続できない場合はリクエストが中断されます。
リクエストの詳細なログを取得
リクエストの詳細なログを取得するには、-v
オプションを使用します。
以下のコマンドは、リクエストとレスポンスの詳細を表示する例です。
curl -v https://www.example.com
このコマンドを実行すると、リクエストの送信状況やレスポンスのヘッダーなど、詳細な情報がターミナルに表示されます。
複数のリクエストを一度に送信
複数のリクエストを一度に送信するには、curl
のコマンドをセミコロンで区切って実行します。
以下のコマンドは、2つのURLに対してリクエストを送信する例です。
curl https://www.example.com; curl https://www.example.org
このコマンドを実行すると、最初のリクエストが完了した後に次のリクエストが送信されます。
FTPサーバーとの通信
curl
はFTPサーバーとの通信にも対応しています。
FTPサーバーからファイルをダウンロードするには、以下のようにします。
curl -u username:password ftp://ftp.example.com/file.txt -o downloaded_file.txt
このコマンドでは、指定したFTPサーバーからfile.txt
をダウンロードし、downloaded_file.txt
として保存します。
また、FTPサーバーにファイルをアップロードする場合は、-T
オプションを使用します。
curl -u username:password -T local_file.txt ftp://ftp.example.com/
このコマンドを実行すると、local_file.txt
が指定したFTPサーバーにアップロードされます。
これらの応用例を活用することで、curl
を使ったさまざまな操作が可能になります。
よくある質問
まとめ
この記事では、curl
コマンドの基本的な使い方から、よく使うオプション、レスポンスの処理、認証とセキュリティ、ファイルのアップロードとダウンロード、APIとの連携、応用例まで幅広く解説しました。
これにより、curl
を活用してさまざまなネットワーク操作を効率的に行うための手法を学ぶことができました。
今後は、実際にcurl
を使って自分のプロジェクトや作業に役立ててみてください。