Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4703 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [2000 server] Resultat de ping erroné

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[2000 server] Resultat de ping erroné

n°1116645
metalkrapo
Posté le 11-06-2005 à 14:44:55  profilanswer
 

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!
 

mood
Publicité
Posté le 11-06-2005 à 14:44:55  profilanswer
 

n°1116646
KangOl
Profil : pointeur
Posté le 11-06-2005 à 14:46:26  profilanswer
 

sans le code ca va etre dur...


---------------
Nos estans firs di nosse pitite patreye...
n°1116658
metalkrapo
Posté le 11-06-2005 à 15:00:56  profilanswer
 

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


n°1117267
metalkrapo
Posté le 12-06-2005 à 15:57:37  profilanswer
 

personne? :'(
 

n°1153617
Sm@No
Posté le 19-07-2005 à 13:22:12  profilanswer
 

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.

n°1153693
Sm@No
Posté le 19-07-2005 à 14:15:35  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [2000 server] Resultat de ping erroné

 

Sujets relatifs
[INFO] Limitations de la fonction RAND() de SQL Server[SQL Server] Utilisation de xp_sendmail
export sql server 7[SQL Server] Prob de Retour Chariot
sécuriser une BD access 2000Exportation SQL Server 2000
[SQL SERVEUR 2000] creation de compte URGENT![ C++ / miniprog ] Reboot server Ro
[SQL Server] Problème avec RAND() 
Plus de sujets relatifs à : [2000 server] Resultat de ping erroné


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)