シェルスクリプトでサイトのhttpステータスのみを取得する方法は?

シェルスクリプトでサイトのhttpステータスのみを取得する方法は?

カールがそのことができると思います。私はスクリプトに次のように書きました。

#!/bin/sh

function test {
    res=`curl -I $1 | grep HTTP/1.1 | awk {'print $2'}`
    if [ $res -ne 200 ]
    then
        echo "Error $res on $1"
    fi
}  

test mysite.com
test google.com

ここでの問題は、私が何をしても、次のものを標準出力に印刷するのを止めることができないことです。

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

私はcronjobがこのスクリプトを実行したいと思います。これがこのようなメッセージを書くと、実行するたびにウェブサイトが大丈夫ですが、cronの標準出力に何かが印刷されたため、電子メールが届きます。

標準出力にゴミを入れずにどのようにステータスコードを取得できますか?このコードは、stdoutでの使用を妨げる追加のゴミを除いて動作します。

ベストアンサー1

   -s/--silent
          Silent or quiet mode. Don't show progress meter 
          or error messages.  Makes Curl mute.

したがって、あなたのリソースは次のようになります

res=`curl -s -I $1 | grep HTTP/1.1 | awk {'print $2'}`

Error 301 on google.comたとえば、結果は次のようになります。

おすすめ記事