Batch + conditions

Bonjour,

Je souhaiterai poser une condition dans mon fichier bat. Ce “script” a pour utilité d’établir une connexion ssh (via putty) sur une machine linux et d’exécuter une commande qui se trouve dans le commande.txt.

Lorsque les machines sont allumées, aucun souci tout fonctionne. Cependant, lorsqu’une machine est éteinte le terminal Putty est ouvert avec un message d’erreur (normal) mais ne se referme pas seul. Je suis obligé de valider le message d’erreur pour que le script continue.

En fait ce qui serait super, ca serait d’exécuter la ligne de commande à la condition que le ping réponde sur cette IP.

"C:/XX/putty.exe" -ssh -2 -P 22 admin@192.168.51.101 -pw ***** -m "C:/XX/commande.txt"
"C:/XX/putty.exe" -ssh -2 -P 22 admin@192.168.51.103 -pw ***** -m "C:/XX/commande.txt"
...

Merci d’avance pour votre aide

man test… Et franchement j’ai eu à m’y coller une fois, good luck…

Alors vite fait quelque manip de base :
ping <PC_A_PINGER> -c 1|grep transmitted|xargs -n 1|sed -n ‘4p’

Pour afficher le 4e element du rapport de ping :
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

pour savoir si l’unique paquet est arrivé.

Puis ca tu le > dans un fichier…

Et tu fais ton test… test je me souviens plus comment tu l’utilises…

Après pour obtenir le 4e element du rapport de ping, y’a surement une meilleure methode, mais je ne connais que ces commandes basiques.

Voici comment j’ai fait, pas trés propre mais ça a le mérite fonctionner ^^ J’insére un “sleep” sinon la multitude d’ouverture de Putty génére des messages d’erreurs.


ping -n 1 192.168.*.*| find "TTL"
if %ERRORLEVEL%==0 (start  c:**putty.exe -ssh -2 -P 22 admin@192.168.*.* -pw admin -m "commande.txt")
if %ERRORLEVEL%==1 (autre commande)
sleep 10