Script pour lancer un programme si le ping ne répond plus - Shell/Batch - Programmation
Marsh Posté le 08-12-2010 à 14:26:14
Est-ce que ce lien repond à ta question : http://www.hotline-pc.org/batch.htm
Par contre, il va falloir faire attention a ne pas saturer ta machine, et lancer une commande sleep a chaque itération pour mettre ton programme en pause pendant quelques secondes
Marsh Posté le 08-12-2010 à 14:34:03
Merci pour les conseils avec sleep, je vais lire ca pour trouver une solution.
Marsh Posté le 08-12-2010 à 15:00:02
Voila ca fonctionne avec ce programme :
@echo off
echo test de la connexion de 192.168.201.146
:testping
ping -n 2 192.168.201.146
echo %errorlevel%
if errorlevel 1 goto erreur
goto testping
:erreur
cd C:\Users\sebastien\Desktop\Dartfish\
test.exe
echo on
exit
Il reste cependant un problème.
Quand je débranche le PC pour activer l'alerte je me retrouve avec 2 cas :
1. "Délai d'attente de la demande dépassé." => %errorlevel% prend bien la valeur de 1 et mon .exe s’exécute donc tout est ok.
2. "Réponse de 192.168.201.122 : Impossible de joindre l'hôte de destination." => La par contre le %errorlevel% prend la valeur 0 donc la boucle continue alors que le ping vers 192.168.201.146 ne répond plus.
Le .exe ne s’exécute pas alors qu'il faudrait qu'il se lance.
J'aimerai savoir si vous avez un moyen pour que %errorlevel% prenne la valeur de 1 que l'on soit dans le cas 1. ou bien dans le cas 2. ou si vous savez pourquoi de facon aléatoire j'obtiens le cas1 ou le cas 2.
Si vous avez d'autres suggestions n'hésitez pas.
Merci
Marsh Posté le 09-12-2010 à 13:29:06
Faire une sorte de grep sur la sortie?
Marsh Posté le 09-12-2010 à 14:56:59
Utiliser les fichiers .bat est la méthode ancienne pour faire des batchs.
Mais, depuis Windows 95, il existe les fichiers .vbs qui permettent de faire plus de choses et plus simplement.
Pour le ping, Microsoft donne la solution avec le script vbs suivant
Set objShell = WScript.CreateObject("WScript.Shell" ) |
(source http://technet.microsoft.com/fr-fr [...] n-us).aspx )
Marsh Posté le 08-12-2010 à 12:06:26
Bonjour,
Je viens solliciter votre aide
Le titre du sujet résume le but de mon programme : exécuter un .exe si le ping d'une machine ne répond plus.
Mon problème est au niveau de la boucle que je n'arrive pas à créer.
Le .bat fonctionne pour le test du ping et l'exécution du programme mais j'aimerai le rentrer dans une boucle pour que le programme se lance une fois que le ping ne répond plus.
Voici la ou j'en suis :
@echo off
echo test de la connexion de 192.168.201.146
ping -n 2 192.168.201.146
echo %errorlevel%
if errorlevel 1 goto erreur
goto fin
:erreur
cd C:\Users\sebastien\Desktop\Dartfish\
test.exe
:fin
echo on
exit
Et ce que je souhaiterai avoir :
Tant que ping 192.168.201.146 répond ne rien faire
quand ping 192.168.201.146 ne répond plus
Lancer C:\Users\sebastien\Desktop\Dartfish\test.exe
Si vous avez qq conseils
Merci