Comment vérifier si un serveur est en cours d'exécution
Je veux utiliser la commande ping pour vérifier si un serveur est en place. Comment pourrais-je faire ce qui suit:
ping $URL
if [$? -eq 0]; then
echo "server live"
else
echo "server down"
fi
Comment pourrais-je y arriver? Aussi, comment pourrais-je faire en sorte qu'elle renvoie la valeur 0 lors de la première réponse au ping, ou renvoie une erreur si les dix premiers ping échouent? Ou bien, y aurait-il une meilleure façon d'accomplir ce que je suis en train de faire ci-dessus?
- ajouter des espaces autour de votre
[
et]
ou tout simplement le codeif ping $URL ; then
- (Bien sûr, vous ne pouvez pas tester une URL, juste un serveur.)
- Quels sont les cas qui ne sont ni un succès ni un échec? Vous désirez peut-être à penser plus sérieusement à vos critères.
- Il ne voulut jamais être un succès ou un échec. Succès = serveur répond, échec = le serveur ne répond pas (après n tentatives)
- Vous pouvez obtenir une réponse à l'une des dix pings par perdre le reste, ce qui indique des problèmes de réseau. J'ai interprété votre question ne définit pas comment gérer ce scénario, mais, maintenant, après relecture, je suppose que tu dirais que c'est une réussite. C'est très bien si c'est vraiment ce que vous voulez, mais je voudrais utiliser un seul ping et voulez une alerte en cas d'échec.
- merci pour la clarification, comment feriez-vous un seul ping?
- Sur de nombreuses plates-formes,
ping -c 1
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser quelque chose comme cela -
Utilisez l'option-c avec ping, ça va un ping sur l'URL étant donné le nombre de fois ou jusqu'à ce que délai
Je'ld vous recommandons de ne pas utiliser uniquement
ping
. Il peut vérifier si un serveur est en ligne en général, mais vous ne pouvez pas vérifier un service spécifique sur ce serveur.Une meilleure utilisation de ces alternatives:
curl
l'homme curl
Vous pouvez utiliser
curl
et vérifier lahttp_response
pour un webservice comme ceoù
HOST
= [ip ou dns-nom de votre hôte]PORT
= [facultatif d'un port; n'oubliez pas de commencer avec:
]200
est normal de réussite http_response403
est une redirection par exemple, peut-être vers une page de connexion donc aussi accetable et plus probablement signifie que le service fonctionne correctement-s
Silencieux ou en mode silencieux.-L
Définit l'Emplacement-w
Le format dans lequel vous voulez afficher la réponse->
%{http_code}\n
nous voulons seulement le http_code-o
le fichier de sortie->
/dev/null
rediriger la sortie vers /dev/null si il n'est pas écrit sur la sortie standard ou lacheck
variable. Habituellement, vous devez obtenir le code source html avant le http_response de sorte que vous avez à ce silence, trop.nc
l'homme nc
Tout
curl
me semble la meilleure option pour les Webservices, car il est vraiment vérifier si le service de page web fonctionne correctement,nc
peut être utilisé pour rapidement vérifier que si un port spécifique sur la cible est accessible (et d'assumer cela s'applique également pour le service).Avantage ici est la réglables délai d'attente, par exemple, de 1 seconde alors que curl pourrait prendre un peu plus longtemps à l'échec, et bien sûr, vous pouvez vérifier aussi les services qui ne sont pas d'une page web comme le port
22
pourSSH
.où
HOST
= [ip ou dns-nom de votre hôte]PORT
= [PAS une option le port]-4
force IPv4 (ou-6
pour IPv6)-d
N'essayez pas de lire depuis l'entrée standard stdin-z
De l'écouter, de ne pas envoyer de données-w
délaiSi une connexion et stdin sont inactifs depuis plus de délai d'attente en secondes, la connexion est fermé doucement. (Dans ce cas
nc
sortie 1 -> échec.)(facultatif)
-n
Si vous utilisez uniquement l'IP: Ne pas faire n'importe DNS ou le service des recherches sur toutes les adresses spécifiées, les noms d'hôtes ou les ports.&> /dev/null
Ne pas imprimer n'importe quelle sortie de la commandeEn bref:
Avez-vous besoin pour autre script? Ou essayer de pirater un simple outil de surveillance? Dans ce cas, vous voudrez peut-être prendre un coup d'oeil à Pingdom: https://www.pingdom.com/.
J'utilise le script suivant la fonction vérifier les serveurs sont en ligne ou pas. C'est utile lorsque vous voulez vérifier plusieurs serveurs. La fonction de masquer le résultat de la commande ping, et vous pouvez gérer séparément le serveur live ou en cas de panne de serveur.
Une bonne solution est d'utiliser MRTG (un simple outil de tracé pour *NIX) avec table de ping-sonde de script. rechercher sur Google.
lire cette pour commencer.
Graphique Exemple: