wget
を使用してHTTP HEAD
リクエストを送信します。出来ますか?
Wgetではありませんが、curlを使用することで簡単に実現できます。
curl -I http://www.superuser.com/
この出力を生成します:
HTTP/1.1 301 Moved Permanently
Content-Length: 144
Content-Type: text/html; charset=UTF-8
Location: http://superuser.com/
Date: Sat, 09 Oct 2010 19:11:50 GMT
試してください:
wget -S --spider www.example.com
-O /dev/null
を渡して、wget
がHTTP応答をファイルに書き込まないようにすることもできます。
curlは必要ありません。
Wgetでは、--spider
を追加すると、HEAD
またはGET
ではなくPOST
リクエストを送信することになります。
これは、URLが応答するかどうかを確認するための優れた最小限の方法です。たとえば、これをスクリプト化されたチェックで使用できます。HEAD
操作は、ネットワークにもターゲットWebサーバーにも負荷をかけないことを確認します。
ボーナス情報:WgetがHEAD
を実行するときにサーバーからHTTPエラー500を受け取ると、同じURLに対してGET
を実行します。このデザインの理由はわかりません。これが、サーバーに対してHEAD
andGET
リクエストの両方が実行される理由です。何も問題がなければ、HEAD
リクエストのみが実行されます。 --tries
オプションを使用してこの機能を無効にすると、Wgetを1回のみに制限できます。
全体として、URLが応答しているかどうかをテストするには、これをお勧めします。
# This works in Bash and derivatives
wget_output=$(wget --spider --tries 1 $URL 2>&1)
wget_exit_code=$?
if [ $wget_exit_code -ne 0 ]; then
# Something went wrong
echo "$URL is not responding"
echo "Output from wget: "
echo "$wget_output"
else
echo "Check succeeded: $URL is responding"
fi
wget -S
はファイルを取得します:
コンテンツの長さ:2316、長さ:2316(2.3K)[text/plain]、保存先: `index.html '
wget --spider
ヘッダーを取得します。
スパイダーモードが有効になっています。リモートファイルが存在するかどうかを確認してください。長さ:未指定[text/plain]リモートファイルが存在します。