Mon post est peut-être un peu déplacé mais je tente ma chance ici n'obtenant
pas de réponse ailleurs, merci de m'en excuser.
Je cherche à savoir quel sont les codes de sortie générés par la commande
ping sous win2k (via la console)
C'est pour utiliser dans un batch.
Je ping une adresse, si réponse au ping je vais à une étiquette
si pas de réponse au ping, je vais à une autre étiquette.
Exemple :
=================================
set adresse=192.168.0.3
ping -n 2 %adresse%
if %ERRORLEVEL%==1 goto SUITE
if %ERRORLEVEL%==0 goto RESERVE
:SUITE
echo Cette adresse est libre ...
goto EXIT
:RESERVE
echo Cette adresse est déjà utilisé sur le réseau ...
goto EXIT
:EXIT
exit
=================================
Le hic, c'est que le ping réponde ou pas, je m'en vais toujours vers
l'étiquette correspondant à la sortie 0 (RESERVE)
y'à un truc que je pige pas ...
Si le résulat de la commande est supérieur ou égale à 1, je devrais filer
vers SUITE, non ?
Mon post est peut-être un peu déplacé mais je tente ma chance ici n'obtenant pas de réponse ailleurs, merci de m'en excuser.
Je cherche à savoir quel sont les codes de sortie générés par la commande ping sous win2k (via la console)
Rediriger et parser le fichier en output (Find par ex)
Ici, on fait IcmpSendEcho() (KB 170591)
Patrick D
H:>ping 192.168.1.34
Pinging 192.168.1.34 with 32 bytes of data:
Reply from 192.168.1.34: bytes2 time0ms TTLd Reply from 192.168.1.34: bytes2 time ms TTLd Reply from 192.168.1.34: bytes2 timems TTLd Reply from 192.168.1.34: bytes2 timems TTLd
Ping statistics for 192.168.1.34: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 10ms, Maximum = 30ms, Average = 17ms
Ping statistics for 192.168.1.40: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
H:>echo %errorlevel% 0
192.168.1.34 existe, 192.168.1.40 n'existe pas Dans les 2 cas ça renvoit un errorlevel 0
Ca renvoit un errorlevel 1 si tu fais, par exemple,
ping www.free.frrr
dans ces cas pas de résolution de nom
bref ton idée de batch est à revoir
-- * enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez m'écrire * * Donne un poisson à un homme, il aura à manger pour un jour * Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
H:>ping 192.168.1.34
Pinging 192.168.1.34 with 32 bytes of data:
Reply from 192.168.1.34: bytes2 time0ms TTLd
Reply from 192.168.1.34: bytes2 time ms TTLd
Reply from 192.168.1.34: bytes2 timems TTLd
Reply from 192.168.1.34: bytes2 timems TTLd
Ping statistics for 192.168.1.34:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 30ms, Average = 17ms
Ping statistics for 192.168.1.40:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
H:>echo %errorlevel%
0
192.168.1.34 existe, 192.168.1.40 n'existe pas
Dans les 2 cas ça renvoit un errorlevel 0
Ca renvoit un errorlevel 1 si tu fais, par exemple,
ping www.free.frrr
dans ces cas pas de résolution de nom
bref ton idée de batch est à revoir
--
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *
* Donne un poisson à un homme, il aura à manger pour un jour
* Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
Reply from 192.168.1.34: bytes2 time0ms TTLd Reply from 192.168.1.34: bytes2 time ms TTLd Reply from 192.168.1.34: bytes2 timems TTLd Reply from 192.168.1.34: bytes2 timems TTLd
Ping statistics for 192.168.1.34: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 10ms, Maximum = 30ms, Average = 17ms
Ping statistics for 192.168.1.40: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
H:>echo %errorlevel% 0
192.168.1.34 existe, 192.168.1.40 n'existe pas Dans les 2 cas ça renvoit un errorlevel 0
Ca renvoit un errorlevel 1 si tu fais, par exemple,
ping www.free.frrr
dans ces cas pas de résolution de nom
bref ton idée de batch est à revoir
-- * enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez m'écrire * * Donne un poisson à un homme, il aura à manger pour un jour * Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
Laurent
Merci à tous pour vos réponses
Je n'avais en effet pas saisie que la commande ping s'effectue toujours bien, que l'adresse pinguée réponde ou non (hormis si FQDN non existant )
Dans mon cas, la solution était donc bien de rediriger le resultat de la commande dans un fichier et de parser ce dernier avec la commande "find"
Ci-joint l'exemple de jean-Calude Bellamy :
On donc va tester les chaines "perte 100" et "inconnu" Comme on ne peut pas faire de test "ou" dans une commande find, on va l'exécuter 2 fois. Ensuite on va stocker le résultat de ping dans un fichier texte, que l'on soumettra ensuite 2 fois de suite à "find"
fichier "testping.bat" -------- couper ici -------- @echo off ping -n 1 %1 > ping.txt find "perte 100" ping.txt > nul if %ERRORLEVEL%==0 goto notfound find "inconnu" ping.txt > nul if %ERRORLEVEL%==0 goto notfound echo %1 est disponible goto fin :notfound echo %1 est indisponible :fin -------- couper ici --------
Laurent
Merci à tous pour vos réponses
Je n'avais en effet pas saisie que la commande ping s'effectue toujours
bien, que l'adresse
pinguée réponde ou non (hormis si FQDN non existant )
Dans mon cas, la solution était donc bien de rediriger le resultat de la
commande dans un fichier
et de parser ce dernier avec la commande "find"
Ci-joint l'exemple de jean-Calude Bellamy :
On donc va tester les chaines "perte 100" et "inconnu"
Comme on ne peut pas faire de test "ou" dans une commande find, on va
l'exécuter 2 fois.
Ensuite on va stocker le résultat de ping dans un fichier texte, que l'on
soumettra ensuite 2 fois de suite à "find"
fichier "testping.bat"
-------- couper ici --------
@echo off
ping -n 1 %1 > ping.txt
find "perte 100" ping.txt > nul
if %ERRORLEVEL%==0 goto notfound
find "inconnu" ping.txt > nul
if %ERRORLEVEL%==0 goto notfound
echo %1 est disponible
goto fin
:notfound
echo %1 est indisponible
:fin
-------- couper ici --------
Je n'avais en effet pas saisie que la commande ping s'effectue toujours bien, que l'adresse pinguée réponde ou non (hormis si FQDN non existant )
Dans mon cas, la solution était donc bien de rediriger le resultat de la commande dans un fichier et de parser ce dernier avec la commande "find"
Ci-joint l'exemple de jean-Calude Bellamy :
On donc va tester les chaines "perte 100" et "inconnu" Comme on ne peut pas faire de test "ou" dans une commande find, on va l'exécuter 2 fois. Ensuite on va stocker le résultat de ping dans un fichier texte, que l'on soumettra ensuite 2 fois de suite à "find"
fichier "testping.bat" -------- couper ici -------- @echo off ping -n 1 %1 > ping.txt find "perte 100" ping.txt > nul if %ERRORLEVEL%==0 goto notfound find "inconnu" ping.txt > nul if %ERRORLEVEL%==0 goto notfound echo %1 est disponible goto fin :notfound echo %1 est indisponible :fin -------- couper ici --------