2017-11-21 3 views
0

私は特定のサービスのためのURLのリストを持っています。 実行中のすべてのURLを検証するか、応答に基づいていないかを確認して、特定のサービスのステータスが実行されていないことを確認します。主な問題は、特定のサービスを表示する方法が実行されていないです。シェルスクリプトのurls検証

while read url; do 
    curl -o /dev/null --silent --head --write-out '%{http_code}' "$url" 
# echo " $LINE" 
    done < softwareurls.txt 
    status="$(curl -Is $url | head -1)" 
    validate=($stats) 
    if [ ${validate[-2]} == "200" ]; then 
     echo OK 
    else 
     echo NOT RESPONDING 
    fi 

softwareurls.txt:例ここで

service1=http://192.168.70.10:8080/ 
service2=http://192.168.80.170:9000/shell 
service3=http://192.168.10.10:8085/ 
........ 
servicen=http://www.sample.com/ 
+0

あなたはすぐにあなたを閉じています。今、すべてのURLでカールを実行し、ステータスを確認します。 doneステートメントをスクリプトの最後に移動する必要があります。この方法では、すべてのURLでカールして、ステータスを確認し、それが良いかどうかを確認してから、次のページに移動します。 – Nic3500

答えて

0

は、私はそれをやった方法です:

#!/bin/bash 
# 

while read service 
do 
    url=$(echo $service | cut -d'=' -f2) 

    status=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "$url") 
    if [ $status == '200' -o $status == '301' -o $status = '302' ] 
    then 
     echo "$url: OK" 
    else 
     echo "$url: NOT RESPONDING" 
    fi 
done < softwareurls.txt 

注:あなたがsoftwareurlsからあなたのラインを抽出

  • 。 txt、あなたはlからURLを抽出する必要がありますine。それはurl=$()行です。
  • curlは、使用するオプションとともに、urlからhttpステータス応答を出力します。その値を保存してテストしてください。それはライン$status=$()です。
  • 多くのHTTP応答が有効である可能性があります。私は200、301と302は大丈夫だと思います。あなたのURLはセットアップの内部にあるようですので、必要に応じてコードを変更することができます。
  • FYI:コードでは$ statusを設定しますが、次の行では$ statsを使用します。 $ statsは設定されていません。

私はこれが役立つことを願っています。

関連する問題