回答:
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
-Iはと同等--headです。
https、あなたはまた、追加することができます-kか--insecure
試してください:
wget -S --spider www.example.com
HTTP応答をファイルに書き込ま-O /dev/nullないように渡すこともできwgetます。
-Sはヘッダーを表示しますが、a GETではなくaを実行しHEADます。つまり、URL全体を取得します。
wget -S --spider http://localhostapacheサーバーで作成されたログは127.0.0.1 - - [04/Mar/2014:15:36:32 +0100] "HEAD / HTTP/1.1" 200 314 "-" "Wget/1.13.4 (linux-gnu)"
curlは必要ありません。
Wgetでは、追加--spiderすることは、HEADリクエストを送信することを意味します(GETまたはに対してPOST)。
これは、URLが応答するかどうかを確認するための優れた最小限の方法です。たとえば、スクリプト化されたチェックでこれを使用できます。HEAD操作により、ネットワークにもターゲットWebサーバーにも負荷がかからないようになります。
ボーナス情報:Wgetは、実行時にサーバーからHTTPエラー500を受け取った場合、同じURLに対してHEADを実行するために移動しGETます。このデザインの理由はわかりません。これが、サーバーに対して実行されている要求HEAD とGET要求の両方が表示される理由です。何も問題がなければ、HEADリクエストのみが実行されます。--triesWgetを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]リモートファイルが存在します。