curlの終了コード
Coddyの「ターミナルで学ぶネットワーク」コースのレッスン 30/47。
1つの curl コマンドには、まったく異なる2つの失敗の概念があり、これらを混同すると実際のバグにつながります。
ステータスコードはサーバーの応答です: 200、404、500。終了コードは、curl がそもそも通信を成立させられたかどうかを示します。
404 は通信自体が成功したことを意味します。サーバーには到達し、リクエストを理解して応答しました。curl は 0 で終了します。終了コードだけを確認するスクリプトは、これを問題ないものとして扱います。その結果、エラーページをダウンロードしているのに成功するパイプラインができてしまうのは、よくある問題です。
curl -s -o /dev/null http://127.0.0.1:9120/missing
echo $? # 0、リクエスト自体は成功したため不正なステータスで失敗させたい場合は、--fail を指定します。これにより、4xx および 5xx の場合に curl はゼロ以外の値で終了します。それ以外の場合は、%{http_code} を自分で確認してください。
チャレンジ
難しい404でもリクエスト自体は成功していることを示します。
- ポート9120でフォルダーを配信します
- 存在しないページを要求し、ステータスコードとともに
status=を出力します - 次の行で、curlの終了コードとともに
exit=を出力します
期待される出力:
status=404
exit=0curlが終了コードを生成した直後に
$?を読み取ります。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ターミナルで学ぶネットワークのすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド