Bash

Linux – curlコマンドでよく使うオプションまとめ

curlはデータ転送を行うコマンドラインツールで、以下はよく使われるオプションです。

-XHTTPメソッド指定、-dでPOSTデータ送信、-Hでヘッダー追加、-oで出力ファイル指定、-Oでリモートファイル名で保存、-Iでヘッダーのみ取得、-Lでリダイレクト追従、-uで認証情報指定、-kでSSL検証無効化、--proxyでプロキシ設定、--data-urlencodeでURLエンコード付きデータ送信などがあります。

よく使うオプション一覧

curlコマンドは、HTTPリクエストを送信するための強力なツールです。

ここでは、よく使われるオプションを一覧で紹介します。

これらのオプションを使うことで、さまざまなリクエストを簡単に実行できます。

オプション説明使用例
-Xリクエストメソッドを指定curl -X GET http://example.com
-dデータを送信curl -d "name=John" http://example.com
-Hヘッダーを追加curl -H "Authorization: Bearer token" http://example.com
-o出力ファイルを指定curl -o output.txt http://example.com
-Iヘッダーのみを取得curl -I http://example.com
-Lリダイレクトを追従curl -L http://example.com
-uユーザー名とパスワードを指定curl -u user:password http://example.com
-sサイレントモード(進行状況を表示しない)curl -s http://example.com

これらのオプションを組み合わせることで、より複雑なリクエストを作成することができます。

例えば、認証が必要なAPIにデータを送信する場合、-uオプションと-dオプションを同時に使用することができます。

実践的なcurlコマンドの活用例

curlコマンドは、さまざまなシナリオで活用できます。

ここでは、実際の使用例をいくつか紹介します。

これらの例を参考にして、curlを効果的に活用しましょう。

1. シンプルなGETリクエスト

特定のURLからデータを取得する基本的なGETリクエストの例です。

curl http://example.com
<!doctype html>
<html>
<head>
    <title>Example Domain</title>
</head>
<body>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents.</p>
</body>
</html>

2. POSTリクエストでデータを送信

フォームデータをPOSTリクエストで送信する例です。

curl -X POST -d "username=test&password=1234" http://example.com/login
ログイン成功

3. JSONデータを送信

APIにJSON形式のデータを送信する場合の例です。

ヘッダーにContent-Typeを指定します。

curl -X POST -H "Content-Type: application/json" -d '{"name":"John", "age":30}' http://example.com/api/users
{"status":"success","message":"ユーザーが作成されました。"}

4. 認証付きリクエスト

ベーシック認証を使用してAPIにアクセスする例です。

curl -u username:password http://example.com/protected
保護されたリソースの内容

5. ファイルのダウンロード

指定したURLからファイルをダウンロードする例です。

-oオプションを使用して、出力ファイル名を指定します。

curl -o downloaded_file.txt http://example.com/file.txt
ダウンロードが完了しました。

これらの例を参考に、curlコマンドを使ってさまざまなリクエストを実行してみてください。

実際のプロジェクトやAPIとの連携に役立つでしょう。

curlコマンドのエラーハンドリング

curlコマンドを使用する際には、エラーが発生することがあります。

エラーハンドリングを適切に行うことで、問題を特定し、対処することができます。

ここでは、curlコマンドのエラーハンドリングの方法を紹介します。

1. ステータスコードの確認

curlコマンドは、HTTPリクエストの結果としてステータスコードを返します。

-oオプションと-wオプションを組み合わせて、ステータスコードを表示することができます。

curl -o /dev/null -w "%{http_code}" http://example.com
200

この例では、200はリクエストが成功したことを示します。

その他の一般的なステータスコードには、404(ページが見つからない)、500(サーバーエラー)などがあります。

2. エラーメッセージの表示

curlコマンドは、エラーが発生した場合に標準エラー出力にメッセージを表示します。

-sオプションを使用しないことで、エラーメッセージを確認できます。

curl http://invalid-url.example.com
curl: (6) Could not resolve host: invalid-url.example.com

3. エラー時の処理をスクリプトに組み込む

シェルスクリプト内でcurlコマンドを使用する場合、エラーが発生した際の処理を組み込むことができます。

$?を使って直前のコマンドの終了ステータスを確認します。

curl -o output.txt http://example.com
if [ $? -ne 0 ]; then
    echo "エラーが発生しました。"
    exit 1
fi

このスクリプトでは、curlコマンドが失敗した場合にエラーメッセージを表示し、スクリプトを終了します。

4. タイムアウトの設定

リクエストが長時間かかる場合、タイムアウトを設定することで、エラーを回避できます。

--max-timeオプションを使用して、最大待機時間を指定します。

curl --max-time 10 http://example.com

この例では、10秒以内に応答がない場合、curlはエラーを返します。

5. 詳細なデバッグ情報の表示

-vオプションを使用すると、curlの詳細なデバッグ情報を表示できます。

これにより、リクエストの詳細を確認し、問題を特定するのに役立ちます。

curl -v http://example.com
*   Trying 93.184.216.34...
* Connected to example.com (93.184.216.34) port 80 (#0)
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.68.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=UTF-8
< Content-Length: 1256
<

この情報をもとに、リクエストの流れやエラーの原因を分析できます。

curlコマンドのエラーハンドリングを適切に行うことで、問題を迅速に特定し、解決することが可能になります。

curlコマンドの応用テクニック

curlコマンドは、基本的な使い方だけでなく、さまざまな応用テクニックを駆使することで、より高度な操作が可能です。

ここでは、curlの応用テクニックをいくつか紹介します。

1. 複数のURLに同時にリクエスト

curlは、複数のURLに対して同時にリクエストを送信することができます。

これにより、複数のリソースを一度に取得できます。

curl http://example.com http://example.org
<!doctype html> ... (example.comの内容)
<!doctype html> ... (example.orgの内容)

2. リクエストの結果をファイルに保存

リクエストの結果をファイルに保存することで、後で確認することができます。

-oオプションを使用します。

curl -o result.html http://example.com
ファイル result.html に保存しました。

3. クッキーの管理

curlは、クッキーを使用してセッションを管理することができます。

-bオプションでクッキーを送信し、-cオプションでクッキーを保存します。

curl -c cookies.txt -b cookies.txt http://example.com

この例では、cookies.txtにクッキーを保存し、次回のリクエストでそのクッキーを使用します。

4. プロキシサーバーの使用

curlは、プロキシサーバーを経由してリクエストを送信することができます。

-xオプションを使用してプロキシのアドレスを指定します。

curl -x http://proxy.example.com:8080 http://example.com

この例では、指定したプロキシサーバーを経由してリクエストを送信します。

5. FTPを使用したファイル転送

curlは、FTPプロトコルを使用してファイルをアップロードまたはダウンロードすることもできます。

以下は、FTPサーバーからファイルをダウンロードする例です。

curl -u username:password ftp://ftp.example.com/file.txt -o downloaded_file.txt
ファイル downloaded_file.txt に保存しました。

6. リクエストの遅延を設定

リクエストを送信する際に、遅延を設定することができます。

--limit-rateオプションを使用して、帯域幅を制限します。

curl --limit-rate 100K http://example.com/largefile.zip -o largefile.zip

この例では、ダウンロード速度を100KB/sに制限します。

7. ヘッダーのカスタマイズ

curlでは、リクエストヘッダーを自由にカスタマイズできます。

-Hオプションを使用して、任意のヘッダーを追加します。

curl -H "X-Custom-Header: value" http://example.com

この例では、X-Custom-Headerというカスタムヘッダーを追加してリクエストを送信します。

これらの応用テクニックを活用することで、curlコマンドをより効果的に使用し、さまざまなシナリオに対応することができます。

まとめ

この記事では、curlコマンドの基本的な使い方から、エラーハンドリングや応用テクニックまで幅広く紹介しました。

これにより、curlを活用してさまざまなHTTPリクエストを効果的に実行する方法が明らかになりました。

ぜひ、実際のプロジェクトや日常のタスクにcurlコマンドを取り入れて、より効率的な作業を実現してみてください。

関連記事

Back to top button