Je cherche une simple vérification shell (+curl) qui évaluerait comme vrai ou faux si une URL existe (retourne 200) ou non.
Réponses
Trop de publicités?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
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.