[Linux] wgetコマンドで指定したURLにHTTPでアクセスできるかどうかを確認する | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

Linux のシェルスクリプトなどで指定した URL に HTTP でアクセスできるかどうかを確認するには、wget コマンドを利用するのが便利です。


wget コマンドは本来 HTTP/HTTPS/FTP プロトコルを使用して非対話的にファイルをダウンロードするコマンドですが、以下のようにオプションを駆使することで指定した URL にアクセスできるかどうかだけを確認するという用途にも応用することができます。

$ wget --spider -nv --timeout 60 -t 1 http://$HOSTNAME/
200 OK

各オプションは以下の通り。

--spider
ファイルをダウンロードしません。
-nv
冗長メッセージを出力せず、エラーメッセージと基本情報のみを出力します。
--timeout
接続タイムアウト(秒)を指定します。デフォルトはタイムアウトなし。
-t
接続拒否や 404 が返ってきたときに再試行する回数。デフォルトは 20回。

なお、wget の結果は標準エラー出力に返ってくるようですので、結果を別のコマンドの入力として利用したいような場合は、標準出力にリダイレクトしてやります。

例えば、アクセスできるかどうかを確認する場合は、HTTP ステータスコード"200"が返ってくればいいわけですから、以下のように wget コマンドの結果を grep してカウントを取り、その値を判定してやればいいと思います。

$ wget -nv --spider --timeout 60 -t 1 http://$HOSTNAME/ 2>&1 | grep -c '200 OK'
1