1. ホーム
  2. http

[解決済み] bash/shellスクリプトからhttp応答コードを評価する方法は?

2022-04-02 23:48:14

質問

当たり前のことを見逃しているような気がするのですが、成功したことがありません。 man [curl|wget] やgoogle("http"は、このような悪い検索用語になります)。私は、頻繁にエラーメッセージとともにステータスコード500を返して失敗するウェブサーバの1つについて、迅速かつamp;dirtyな修正方法を探しています。一度このような状態になると、再起動する必要があります。

根本的な原因を見つけるのは難しいようなので、本当に直せるまでのつなぎとして、迅速な修正を目指します(サービスには高可用性は必要ありません)。

提案された解決策は、5分ごとに実行されるcronジョブを作成し、そのチェックで http://localhost:8080/ . これがステータスコード500で返ってきた場合、Webサーバーを再起動します。サーバーは1分以内に再起動するので、すでに実行されている再起動を確認する必要はありません。

問題のサーバーはubuntu 8.04のミニマルインストールで、現在必要なものを動かすのに十分なパッケージがインストールされているだけです。bashでタスクを実行するという難しい条件はありませんが、このようなミニマルな環境でも、これ以上インタプリタをインストールせずに実行できるようにしたいです。

(httpのステータスコードを環境変数に代入するコマンド/オプションがあれば十分で、スクリプトには十分精通しています。これは、探したのですが見つかりませんでした)。

解決方法は?

500のコードではテストしていませんが、200、302、404などの他のコードでは動作します。

response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)

なお、--writeoutで指定する書式は引用符で囲む必要があります。 ibai さんの提案のように --head で、HEADのみのリクエストにします。これは、ページの内容が送信されないので、検索が成功したときの時間を節約することができます。