93 votes

Comment vérifier si une URL existe avec le shell et probablement curl ?

Je cherche une simple vérification shell (+curl) qui évaluerait comme vrai ou faux si une URL existe (retourne 200) ou non.

154voto

Charles Duffy Points 34134

Utilisation de --fail rendra le statut de sortie non nul en cas d'échec de la requête. Utilisation de --head évitera de télécharger le contenu du fichier, puisque nous n'en avons pas besoin pour cette vérification. Utilisation de --silent évitera que des statuts ou des erreurs soient émis par la vérification elle-même.

if curl --output /dev/null --silent --head --fail "$url"; then
  echo "URL exists: $url"
else
  echo "URL does not exist: $url"
fi

Si votre serveur refuse les demandes HEAD, une alternative consiste à demander uniquement le premier octet du fichier :

if curl --output /dev/null --silent --fail -r 0-0 "$url"; then

39voto

ailnlv Points 319

Je trouve que wget est un meilleur outil pour cela que CURL ; il y a moins d'options à retenir et vous pouvez en fait vérifier sa valeur de vérité dans bash pour voir s'il a réussi ou non par défaut.

if wget --spider http://google.com 2>/dev/null; then
  echo "File exists"
else
  echo "File does not exist"
fi

Le site --spider permet à wget de vérifier si le fichier existe au lieu de le télécharger. 2> /dev/null réduit au silence la sortie stderr de wget.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X