J'essaie de créer un programme qui peut convertir une série de scans de mangas en un seul fichier pdf, et je ne veux pas avoir à essayer de télécharger l'image pour déterminer si j'ai la bonne URL. Existe-t-il une commande de script Shell que je peux utiliser pour vérifier simplement si une page Web existe?
Sous un * NIX, vous pouvez utiliser curl
pour émettre une simple demande HEAD
(HEAD
ne demande que les en-têtes, pas le corps de la page):
curl --head http://myurl/
Ensuite, vous ne pouvez prendre que la première ligne, qui contient le code d'état HTTP (200 OK, 404 non trouvé, etc.):
curl -s --head http://myurl/ | head -n 1
Et puis vérifiez si vous avez obtenu une réponse décente (le code d'état est 200 ou 3 **):
curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].."
Cela affichera la première ligne si le code d'état est correct, ou rien s'il ne l'est pas. Vous pouvez également diriger cela vers/dev/null pour obtenir aucune sortie et utiliser $?
pour déterminer si cela a fonctionné ou non:
curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null
# on success (page exists), $? will be 0; on failure (page does not exist or
# is unreachable), $? will be 1
MODIFIER -s
indique simplement à curl
de ne pas afficher de "barre de progression".
Utilisez cURL pour obtenir le code d'état et vérifiez les valeurs requises.
status=$(curl -s --head -w %{http_code} http://www.google.com/ -o /dev/null)
echo $status
Assurez-vous d'abord qu'il n'y a pas de problème d'autorisation. Si une autorisation est requise, vous fournissez le nom d'utilisateur et le mot de passe. Créez un fichier de script Shell (checkURL.sh) et collez le code ci-dessous.
J'espère que ceci vous aidera.
checkURL.sh
yourURL="http://abc-repo.mycorp.com/data/yourdir"
if curl --output /dev/null --silent --head --fail "$yourURL"
then
echo "This URL Exist"
else
echo "This URL Not Exist"
fi
Son travail pour moi dans Nexus et autres référentiels.
Vous pouvez toujours simplement utiliser wget
; Je fais comme le code est plus simple.
if [[ $(wget http://url/ -O-) ]] 2>/dev/null
then echo "This page exists."
else echo "This page does not exist."
fi
En utilisant le -O-
option avec wget
signifie qu'il essaiera de sortir le contenu de la page, mais seulement s'il existe. Donc, s'il n'y a pas de sortie, la page n'existe pas. Le 2>/dev/null
est juste pour envoyer la sortie (s'il y en a) dans la corbeille.
Je sais que c'est en retard, mais j'espère que cela aide.