Retour au site
Connexion : S'inscrire

11 messages
Filtrer ok

Ping en batch + condition

Un expert informatique vous aide immédiatement par téléphone.
Bonjour, dan le cadre de mon travail j'aimerais créer un fichier batch me premettant de pinguer plusieurs adresse IP.
Le problème est que je ne sais pas du tout comment m'y prendre.

J'arrive a pinguer un ip, mais comment traiter le résultat ?

par exemple si une machine répond comment afficher le message "OK pour 192.168.1.1"
ou si elle ne repond pas afficher "Erreur sur 192.168.1.1"

j'ai commencé avec cette commande, mais je suppose que cela n'est pas bon.

@ECHO OFF
@SET test=10.4.123.110
ping.exe %test%

Merci pour votre aide
 
 
regarde du côté de errorlevel
www.google.fr...
j'ai pas de windows sous la main pour t'en dire plus pour le moment

PS: ici il est dit que un ping réussi ne retourne pas tjs un errorlevel de 0
tu peux donc rediriger la sortie du ping à l'aide d'un pipe vers la commande "find" pour trouver le texte correpondant à un ping réussi. "TTL" en l'occurence

exemple

tu crées un fichier liste_serveur.txt dans lequel tu mets les ip de tes serveurs à pinguer

@echo off
for /F %%i in (j:\test\liste_serveur.txt) do (
PING %%i -n 1 | FIND "TTL=" >NUL
IF NOT ERRORLEVEL 1 (echo %%i OK) ELSE (
PING %%i -w 3000 | FIND "TTL=" >NUL
IF ERRORLEVEL 1 (ECHO Aucune réponse de %%i) ELSE (echo %%i OK) )
)
Edité le 08/08/2008 à 10:34
 
 
script corrigé y'avait des erreurs
 
 
Salut, s'est exactement ce que je voulais, après je vais me débrouiller pour enregistrer les résultats dans un fichier texte !

Par contre il me met que c'est ok meme pour des adresse qui ne sont pas sur le reseau ?
 
 
il doit te mettre ok que sur des ip qu'il arrive à pinguer normallement.
Donc si l'ip n'est pas sur ton réseau mais qu'elle existe et qu'elle est joignable ça te marquera ok.
Si elle est pas accessible ça doit te marquer "Aucune réponse"
 
 
Pourtant je t'assure que je ping des ip qui ne sont pas joignble sur mon reseau ?
meme quand je fais un ping manuel je n'es pas de réponse ? je ne comprend pas là ?
 
 
je comprends pas pouquoi ça te fait ça. Chez moi y'a pas de soucis.

peux tu indiquer ce que ça te marque quand tu fais un ping manuel sur une adresse qui n'est pas joignable?
 
 
Salut, d'abord merci pour ton aide

Alors le script me met toujours ok (donc ip joignable)

par contre sous une commande dos je fait ping 192.168.10.155 par exemple sa me retourne

Envoi d'une requête 'ping' sur 192.168.10.155 avec 32 octets de don

Délai d'attente de la demande dépassé.
Délai d'attente de la demande dépassé.
Délai d'attente de la demande dépassé.
Délai d'attente de la demande dépassé.

Statistiques Ping pour 192.168.10.155:
Paquets : envoyés = 4, reçus = 0, perdus = 4 (perte 100%),

DOnc je ne comrpend vraiment pas là !

Merci encore
 
 
je comprends pas non plus à vrai dire. En faisant divers tests sur les codes retour %errorlevel% jr me rends compte que ça """fonctionne""" très bizarrement

essaye cette version tout de même


@echo off
for /F %%i in (j:\test\liste_serveur.txt) do (
PING %%i -n 1 | FIND "TTL=" >NUL
IF ERRORLEVEL 0 (echo %%i OK) ELSE (
PING %%i -w 3000 | FIND "TTL=" >NUL
IF NOT ERRORLEVEL 0 (ECHO Aucune réponse de %%i) ELSE (echo %%i OK) )
)
 
 
BOnjour, ben ecoute je viens de tester encore et j'essai plusieurs Ip, mais le problème persiste !
je comprend vraiment pas là !
je vais essayer d'étudier le %errorlevel% et si j'ai une reponse je te la post ici

Merci a toi
 
 
ça fait un bail mais je pense avoir compris
si tu veux essayer ça et me dire


@echo off
setlocal enableDelayedExpansion
for %%i in (xxx.xxx.xxx yyy.yyy.yyy zzz.zzz.zzz) do (
PING %%i -n 1 | FIND "TTL=" >NUL
IF NOT !ERRORLEVEL! == 1 (echo %%i OK) ELSE (
PING %%i -w 3000 | FIND "TTL=" >NUL
IF !ERRORLEVEL! == 1 (ECHO Aucune réponse de %%i) ELSE (echo %%i OK) )
)
endlocal
 
 

|
 
11 messages
Un expert informatique vous aide immédiatement par téléphone.
Filtrer ok
 
Vous devez être connecté pour écrire un message !
 

 Sujets Similaires: