[2000 server] Resultat de ping erroné

Resultat de ping erroné [2000 server] - Shell/Batch - Programmation

Marsh Posté le 11-06-2005 à 14:44:55    

Bonjour!
 
Je travaille actuellement sur un petit batch, mais je tombe sur un problème assez étonnant. A un moment je teste le résultat d'un ping:
if errorlevel 1 goto erreur
 
Seulement je teste avec 3 noms de machines (une existante mais éteinte, et 2 imaginaires), et pour la machine éteinte le ping n'aboutit pas, pourtant errorlevel vaut bien 0...
 
J'ai besoin d'aide là... merci d'avance!
 

Reply

Marsh Posté le 11-06-2005 à 14:44:55   

Reply

Marsh Posté le 11-06-2005 à 14:46:26    

sans le code ca va etre dur...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 11-06-2005 à 15:00:56    

ok voilà le code... mais je ne suis pas convaincu que le problème vienne de là, puisque j'affiche le résultat du ping suivi de la valeur de errorlevel, et ça me donne:
pour les machines inexistantes : "hôte inconnu" et errorlevel 1
pour la machine éteinte : "pertes : 100%" et errorlevel O
 
voilà quand même le code, la partie qui pose problème est dans le script 2
les noms de machines sont extraits du fichier machines.txt
 
Merci d'avance
 
 
script1:
 

Code :
  1. @echo off
  2. cls
  3. if exist rapport.txt del rapport.txt
  4. FOR /F %%A IN (machines.txt) DO start /min script2.bat %%A
  5. echo Veuillez attendre la fermeture des autres fenetres DOS
  6. echo puis appuyer sur une touche.
  7. pause > nul
  8. if not exist rapport.txt goto ok
  9. REM au moins une machine n'a pas repondu au ping
  10. echo A- afficher le rapport
  11. echo B- imprimer le rapport
  12. set /p choix=que souhaitez-vous faire ?
  13. if "%choix%" == "b" goto b
  14. REM affichage du rapport
  15. rapport.txt
  16. goto eteindre
  17. :b
  18. REM impression du rapport
  19. REM print /D:*****chemin réseau ou lpt1 ou LPT2**** rapport.txt >nul
  20. echo Impression du rapport en cours
  21. print lpt1 rapport.txt >nul
  22. goto eteindre
  23. :ok
  24. echo Tous les postes sont en cours d'extinction.
  25. :eteindre
  26. echo.
  27. echo A- eteindre le serveur
  28. echo B- laisser le serveur en marche
  29. set /p choix=que souhaitez-vous faire ?
  30. if "%choix%" == "b" goto fin
  31. REM c:\winnt\system32\shutdown /l /y
  32. echo extinction du serveur
  33. pause
  34. :fin
  35. echo le sereur reste en marche
  36. pause
  37. echo on
  38. exit


 
script2:
 

Code :
  1. @echo off
  2. echo.
  3. echo test de la connexion de %1%
  4. ping -n 2 %1%
  5. REM ping -n 2 %1% >nul
  6. echo %errorlevel%
  7. REM
  8. pause
  9. REM
  10. if errorlevel 1 goto erreur
  11. c:\winnt\system32\shutdown \\%1%
  12. goto fin
  13. :erreur
  14. echo %1% n'a pas repondu >> rapport.txt
  15. echo ERREUR - %1% n'a pas repondu
  16. :fin
  17. echo on
  18. exit


Reply

Marsh Posté le 12-06-2005 à 15:57:37    

personne? :'(
 

Reply

Marsh Posté le 19-07-2005 à 13:22:12    

Normal pour testé un ping on n'utilise pas errorlevel!
Il faut faire comme sa:
Tu fait ton ping et tu l'envoi dans un fichier ensuite tu cherche les valeurs reponse hote inconnue ou delai d'attente dépassé.
 
SET Machine=%1  
SET Compteur=0  
 
FOR /F "tokens=1" %%i IN ('ping IP') DO call :TestPing %%i  
GOTO TestPingSuite  
 
:TestPing  
set ChainePing=%1  
IF %ChainePing%Chaine==D‚laiChaine set /a Compteur=%Compteur%+1  
IF %ChainePing%Chaine==H“teChaine set /a Compteur=%Compteur%+1  
IF %ChainePing%Chaine==MauvaiseChaine set /a Compteur=%Compteur%+1  
GOTO FIN  
 
:TestPingSuite  
if %Compteur%==0 GOTO PingOK  
GOTO NoPing  
 
Un peu comme ca!
Si tu n'y arrive pas demande je le ferais entier.

Reply

Marsh Posté le 19-07-2005 à 14:15:35    

Ou alors comme sa aussi ca marche:
 
@echo off
cd\
echo 192.168.1.1>temp1.txt
for /F %%i IN (temp1.txt) DO (PING -n 2 -w 4 %%i | FIND "TTL=">NUL
IF NOT ERRORLEVEL 1 goto ok  
)
goto non
 
:non
echo Pas de reponse!
goto fin
 
:ok
echo ping reussi!
goto fin
 
:fin
pause
del temp1.txt
 
En gros, mais un peu plus simple et tu peu faire facillement  des logs et tu peu mettre plusieur ip dans le txt.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed