Comment distinguer une boucle max-time en dehors d’un timeout de connexion?

Exemple de commande

curl -s -w "%{http_code} %{http_connect}" --connect-timeout 10 --max-time 50 

Reviendra 000 000 à la fois pour le délai de connexion atteint et le délai maximal atteint. Quelle est la meilleure façon de distinguer ces deux erreurs?

La seule différence, pour autant que je sache, est la suppression du drapeau -s :

  • Le délai de connexion renvoie curl: (28) connect() timed out et
  • Délai d’attente maximum renvoie curl: (28) Operation timed out

Votre question comporte deux points:

  • CODE HTTP
  • Distinguer la différence

CODE HTTP

En cas d’échec de la commande, il n’y aura pas de code http. Parce qu’il n’y a pas de réponse. Vous pouvez acquérir le code http uniquement lorsque la commande est réussie.

Distinguer la différence

Vous pouvez obtenir l’erreur par l’ordre suivant.

 result=`curl --connect-timeout $connectiontimeout --max-time $maxtimeout -s -S -X POST -H 'Content-Type: text/plain' -d "$DATA" "$resturl" 1>&1 2>&1` if [ "$result" = "curl: (28) connect() timed out" ] ;then echo "curl: (28) connect() timed out" fi 

Ensuite, vous pouvez juger du résultat pour distinguer les deux erreurs.