Je crée un vérificateur de site en ligne (vous dit s'il est en haut ou en bas) avec CURL sur Windows, mais cela ne semble pas fonctionner.
J'ai essayé de créer un script simple sur Windows. Premièrement, je vérifie Google avec la redirection de CURL et de sortie dans le fichier StatutGoogle.txt. Ensuite, je demande à FindStr de trouver la phrase "Connexion établie". Cela signifie que le site Web est en place. Code d'erreur 0 pour Findstr signifie qu'il a trouvé ce qu'il cherchait. Donc, si cela a trouvé ce qu'il cherchait, je reçois un message "site est up". Si cela ne trouve pas, je reçois un code d'erreur différent, de sorte que le message soit "Site". P>
Le problème est: Je reçois les deux messages. J'ai déjà essayé d'utiliser si% errorlevel%%, mais cela n'a pas fonctionné aussi. P>
En outre, je voudrais un code avec plusieurs sites Web car je crée un script BAT qui vérifie en réalité environ 9 ou 10 site Web à la fois. P>
curl -i http://www.google.com/ 1> statusgoogle.txt findstr /c:"Connection established" statusgoogle.txt if errorlevel 0 (GOTO :upwarning) else (GOTO :downwarning) :upwarning echo site up :downwarning echo site down
3 Réponses :
Le problème est qu'après que vous sautez sur "Upwarning", le reste de votre code sera toujours exécuté. Vous devez mettre fin au script après "ECHO SITE UP":
curl -i http://www.google.com/ 1> statusgoogle.txt findstr /c:"Connection established" statusgoogle.txt if errorlevel 0 (GOTO :upwarning) else (GOTO :downwarning) :upwarning echo site up goto :EOF :downwarning echo site down
Ça ne fonctionne pas complètement. Maintenant, cela ne montre que "site up", quel que soit le site / la page Web. Peut-être que Findstr n'a pas de code d'erreur / retour. Toute suggestion, personnes?
Avec Trouver, j'ai les mêmes résultats. Les codes de retour ne fonctionnent pas.
L'un des malentendus du classique qui est toujours vrai pour des graves graves positives. p> soit P> si errorlevel 0 code> commande,
qui se traduit par (voir aide si)
si errorLEVEL 1 code> et inverser la logique
Si ErrorLevel 1 (Goto: Downwarning) Autres (Goto: Upwarning)
code> li>
% errorLelvel% code>
Si% ERRORLEVEL% == 0 (goto: upwarning) Autres (goto: Downwarning)
code> li>
&& / || Code> Li>
ul>
Le problème était également le manque de goto: EOF code> entre la mise en état et la diminution de la masse inférieure.
Si vous êtes capable d'utiliser Powershell, il est assez facile.
try { Invoke-WebRequest "http://www.hp.com" | Out-Null "Web site is up" } catch { "Web site is not up" }
En outre, je ne suis pas disposé à utiliser Ping car cela ne fonctionne pas dans mon cas car plusieurs sites Web fonctionnant sur le même serveur avec la même adresse IP. Quelque chose comme: site1.domain.com, site2.domain.com, site3.domain.com