web-dev-qa-db-fra.com

Script Linux avec curl pour vérifier que le service Web est en place

J'ai un webservice fourni à http://localhost/test/testweb

Je veux écrire un script pour vérifier si le service Web fonctionne avec curl

Si un paramètre curl est donné, renvoie 200 OK ok true false pour que je puisse l'utiliser est le bloc if-else dans le script linux

33
Ahmet Karakaya
curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null
  • -s = Sortie de cURL silencieuse
  • -L = Suivre les redirections
  • -w = Format de sortie personnalisé
  • -o = Redirige la sortie HTML vers /dev/null

Exemple:

[~]$ curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null
200

Je supprimerais probablement le \\n si je devais capturer la sortie.

61
Burhan Khalid

Identique à @ burhan-khalid, mais a ajouté --connect-timeout 3 et --max-time 5.

test_command='curl -sL \
    -w "%{http_code}\\n" \
    "http://www.google.com:8080/" \
    -o /dev/null \
    --connect-timeout 3 \
    --max-time 5'
if [ $(test_command) == "200" ] ; 
then
   echo "OK" ;
else
   echo "KO" ;
fi
3
Mohamed EL HABIB

Utilisez ceci:

curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1
cat $TMP_FILE
0

Cela vérifiera les en-têtes via wget 2>&1pipe le stderr vers stdout grep filtres -O /dev/null lance simplement le contenu de la page

if [ "\`wget http://example.org/ -O /dev/null -S --quiet 2>&1 | grep '200 OK'\`" != "" ]; 
then 
   echo Hello; 
fi;

Je sais pas boucler, mais toujours une solution

0
Thomas Nordquist

J'avais besoin d'une meilleure réponse à cela, j'ai donc écrit le script ci-dessous.

Le fakePhrase est utilisé pour détecter les resposnes HTTP de l'adware ISP "Search Assist".

#!/bin/bash

fakePhrase="verizon"
siteList=(
  'http://google.com'
  'https://google.com'
  'http://wikipedia.org'
  'https://wikipedia.org'
  'http://cantgettherefromhere'
  'http://searchassist.verizon.com'
)

exitStatus=0

function isUp {
  http=`curl -sL -w "%{http_code}" "$1" -o temp_isUp`
  fakeResponse=`cat temp_isUp | grep $fakePhrase`
  if [ -n "$fakeResponse" ]; then
    http=$fakePhrase
  fi
  case $http in
  [2]*)
    ;;
  [3]*)
    echo 'Redirect'
    ;;
  [4]*)
    exitStatus=4
    echo "$1 is DENIED with ${http}"
    ;;
  [5]*)
    exitStatus=5
    echo "$1 is ERROR with ${http}"
    ;;
  *)
    exitStatus=6
    echo "$1 is NO RESPONSE with ${http}"
    ;;
  esac
}

for var in "${siteList[@]}"
do
  isUp $var
done

if [ "$exitStatus" -eq "0" ]; then
  echo 'All up'
fi

rm temp_isUp
exit $exitStatus
0
Michael Cole