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
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.
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
Utilisez ceci:
curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1
cat $TMP_FILE
Cela vérifiera les en-têtes via wget 2>&1
pipe 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
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