On m'a demandé d'écrire un script Shell Pour vérifier si une URL est UP/Working ou non pour mon projet.
J'ai essayé de trouver des indices sur Internet, mais tout ce que j'ai obtenu est de vérifier si l'URL existe ou non.
J'ai d'abord essayé avec wget
.
wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^ /'
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi
Ma prochaine tentative a été avec curl
.
curl -ivs https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html#
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi
Mais, les deux vérifient l'existence de l'URL et non la réponse.
curl -Is http://www.yourURL.com | head -1
Vous pouvez essayer cette commande pour vérifier n'importe quel code URL.Status 200 OK
signifie que la demande a réussi et que l'URL est accessible.
Vous pouvez également tester la disponibilité des URL et obtenir le code de réponse à l'aide de la commande telnet
telnet www.yourURL.com 80
80 est le numéro de port.
Vous pouvez faire ce qui suit
#!/bin/bash
read -p "URL to check: " url
if curl --output /dev/null --silent --head --fail "$url"; then
printf '%s\n' "$url exist"
else
printf '%s\n' "$url does not exist"
fi
Les instructions if
ne sont pas nécessaires cependant, je les mets ici juste pour illustrer le flux du script.
La chose suivante a fonctionné pour moi ....
status="$(curl -Is http://www.google.com | head -1)"
validate=( $status )
if [ ${validate[-2]} == "200" ]; then
echo "OK"
else
echo "NOT RESPONDING"
fi
J'ai essayé de ce que @THUSHI a écrit.
Si vous ping
l'URL, cela vous donnera également une réponse
ping -c 5 www.google.com
Où -c
comptera jusqu'à l'expiration du délai de 5.
À la lumière de ce qui m'a été conseillé, nmap
peut fonctionner si son package est installé sur votre système. curl
serait une meilleure option, mais néanmoins voici un exemple utilisant nmap
:
nmap -p 80 -sT www.google.com
La plupart du temps, curl ne fonctionne pas sur https si vous voulez vérifier, vous pouvez vérifier via "curl --version" vous ne verrez pas l'option https dans ce cas, vous pouvez utiliser ci-dessous
wget --post-data '{"name":"Radha", "Car": "Jaquar"}' --header "Content-Type: application/json" --no-check-certificate https://yourrequiredURI