2016-03-02 4 views
0

J'essaie de tester et de quantifier une réponse d'erreur intermittente à partir d'un serveur http. J'ai un appel de curling construit qui peut faire la demande nécessaire, mais je suis fatigué de taper la flèche vers le haut et de revenir.boucle un appel de boucle et compter les réponses réussies avant une erreur

Comment puis-je dire à curl de faire la demande à plusieurs reprises jusqu'à ce qu'il rencontre une erreur, puis afficher le nombre de réponses de succès avant l'erreur?

Répondre

1

Cette recette de bash devrait faire ce que vous cherchez.

i=0 ; while true ; do curl -o /dev/null -s https://www.google.com/ ; if [ $? -ne 0 ] ; then echo $i ; break ; fi ; i=$(($i+1)) ; echo -en "$i  \r" ; sleep 1 ; done 

éclaté en plusieurs lignes:

i=0 # set counter to 0 
while true # infinite loop 
do 
    curl -o /dev/null -s https://www.google.com/ # silent curl request to site 
    if [ $? -ne 0 ] 
    then 
     # curl didn't return 0 - failure 
     echo $i 
     break # terminate loop 
    fi 
    i=$(($i+1)) # increment counter 
    echo -en "$i  \r" # display # of requests each iteration 
    sleep 1 # short pause between requests 
done 

Vous pouvez en option rediriger la sortie vers un fichier cURL, alors quand il échoue, vous pouvez voir la sortie en utilisant quelque chose comme ceci:

curl -v -o /dev/null https://google.com &> /tmp/output.txt