Linux – curlコマンドでよく使うオプションまとめ
curlはデータ転送を行うコマンドラインツールで、以下はよく使われるオプションです。
-X
でHTTPメソッド
指定、-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コマンドを取り入れて、より効率的な作業を実現してみてください。