Bonjour,
Étant en stage pendant une durée de 3 mois, j'ai comme mission de réaliser un script (qui sera automatisé) prenant une liste des postes (MAC, IP, Masque, NomDNS) au format CSV généré par un pack d'administration personnalisé (créé à partir d'une requête SQL directement sur la BDD de SCE).
Le script est sensé exécuter le module WolCmd.exe pour toutes les machines présentes dans mon fichier CSV (pour ensuite faire un scan anti-virus, forcer le téléchargement et l'installation des MAJ via SCE).
Jusqu'ici, je suis arrivé à traiter toutes les lignes de ma liste, seulement il me manque un petit coup de pouce pour que mon script fonctionne parfaitement.
Je vous joins mon script batch DOS (commandes 'sed' et 'tr' utilisées grâce à deux modules .exe que j'ai exporté du programme 'GNUWin32') :
Où %%a = MAC
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 @echo off echo ----------------------------------------------------------------------------- > D:\log_WOL.txt date /t >> D:\log_WOL.txt time /t >> log_WOL.txt echo ----------------------------------------------------------------------------- >> D:\log_WOL.txt echo. >> D:\log_WOL.txt echo **************************** Démarrage du script **************************** >> D:\log_WOL.txt echo. >> D:\log_WOL.txt echo ----------------------------------------------------------------------------- >> D:\log_WOL.txt echo. >> D:\log_WOL.txt C: cd ../../../ cd Program Files\GnuWin32\bin sed '1d' <D:\AdresseMac.csv | tr -d - >D:\AdresseMacOK.csv echo ********************** Mise en forme du fichier CSV OK ********************** >> D:\log_WOL.txt echo. >> D:\log_WOL.txt echo ----------------------------------------------------------------------------- >> D:\log_WOL.txt echo. >> D:\log_WOL.txt echo **************************** Réveil des machines **************************** >>D:\log_WOL.txt echo. >> D:\log_WOL.txt D: FOR /F "tokens=1,2,3,4 delims=," %%a IN (D:\AdresseMacOK.csv) DO ( D:\WolCmd.exe %%a %%b %%c 7 echo Envoi du Wake On LAN sur la machine %%d >>D:\log_WOL.txt PING %%b -n 1 | FIND "TTL=" IF %ERRORLEVEL% EQU 0 (( echo La machine %%d est réveillée)) else (( echo La machine %%d n'est pas réveillée)) echo. >>D:\log_WOL.txt )
%%b = IP
%%c = Masque
%%d = Nom DNS
J'ai comme résultat affiché soit 'La machine x est réveillée' si le ping est répondu, et les deux ('...est réveillée' et '...n'est pas réveillée') lorsque je ne reçois pas de réponse de la machine pinguée.
J'ai isolé mon erreur en testant un script qui fonctionne correctement tel que :
J'aimerai savoir si le IF/ELSE est utilisable dans ma boucle FOR. C'est pour cette raison que je fais appelle à vous (pour la première fois), pros du développement apparemment ^^ !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 PING 127.0.0.1 -n 1 | FIND "TTL=" IF %ERRORLEVEL% EQU 0 ( echo TTL Trouve pour l'adresse 127.0.0.1) else ( echo TTL Non Trouve pour l'adresse 127.0.0.1) PING 127.0.0.0 -n 1 | FIND "TTL=" IF %ERRORLEVEL% EQU 0 ( echo TTL Trouve pour l'adresse 127.0.0.0) else ( echo TTL Non Trouve pour l'adresse 127.0.0.0)
Merci d'avance.
Partager