[Batch] el error level del ping me está chuleando ¡¡

Iniciado por edunardo, 6 Febrero 2009, 20:01 PM

0 Miembros y 1 Visitante están viendo este tema.

edunardo

Hola a todos...

Estoy haciendo un script, en el cual yo hago una serie de pings y si alguno no responde cambia el valor de la variable res ok y luego si ha cambiado dicho valor pues hay una condicion.
El caso es que nunca cambia el valor de res... Cambio corchetes, pongo parentesis etc etc pero nada.
Alguien me echa una mano?
Mil gracias.

set res=0
set var=0
ECHO          ARMARIO RG2
ping host -n 2 -w 300 || (%res%==1)
if NOT %res%==0 (
echo no ha respondido
echo algo falla quieres continuar?S/N
set /p var=
if %var%==n goto :eof
)
pause

edunardo

Veo que el error level haga ping o no es 9009(creo que era es numero no recuerdo)...
Por lo tanto estoy pillado...

si hace ping y no encuentra el host(en dns o netbios) me da error level 0 y me da un error  de que "0" no se reconoce como un programa interno .... aunque el batch sigue, no se por que dará ese error...

si hace ping y el host está apagado o no responde -->error level 9009

si hace ping y el host responde -->error level 9009


Banti

Cita de: edunardo en  6 Febrero 2009, 20:01 PM
ping host -n 2 -w 300 || (%res%==1)

Ehhh hay un pequeño gran problema. No se especifico la IP.

Darioxhcx

if %res%==1
hay no estara el error , q falto un if ?

leogtz

@echo off
:: 1 responde, 0 no responde.
ping -n 2 www.google.com && (set "res=1") || (set "res=0")
echo.%res%
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

edunardo

Ok leo eso valdría pero hay un problemilla, ... no se porque en vez de si pongo
(set /p var=1)
si pongo (%var%==1) no funciona... no se por que, y habiendo declarado var antes con un set...

Por otro lado.

Yo hago un ping y en caso de que no me responda, a parte de establecer la variable res a 1 me gustaría que  se guardase en un txt o una variable, el nombre del host que no ha respondido.
La linea que os pongo funciona, me falta la parte en la que con un find cojo HOST y luego lo meto a una variable o un txt...
Espero haberme explicado bien.
Muchas gracias.


ping HOST -n 2 -w 300 || (set res=1)

leogtz

#6
@echo off
for /l %%x in (1,1,255) do (
ping -a 192.168.1.%%x > nul 2>&1 || (
set "res=1"
echo Host : 192.168.1.%%x >> respuestas.txt
)
)


O :
@echo off
for /l %%x in (1,1,255) do (
ping -a 192.168.1.%%x > nul 2>&1 || (
for /f "tokens=4" %%c in ('ping -a 192.168.1.%%x ^| find /i "Haciendo"') do (
echo Host : 192.168.1.%%x : %%c >> respuestas.txt
)
)
)

Ese es para los que no respondan, y este para los que si :
@echo off
for /l %%x in (253,1,255) do (
ping -a 192.168.1.%%x > nul 2>&1 && (
for /f "tokens=4" %%c in ('ping -a 192.168.1.%%x ^| find /i "Haciendo"') do (
echo Host : 192.168.1.%%x : %%c >> respuestas.txt
)
)
)


Pero es obvio que en los hosts que no respondan no se dará el nombre de host.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

_m

#7
@FOR %%- IN (
WWW.GOOGLE.COM
NO.EXISTE
WWW.YAHOO.COM
) DO @(
PING -n 1 %%- >NUL && (
>>Resultado.txt ECHO El servidor %%- responde.
) || (
>>Resultado.txt ECHO El servidor %%- no responde.
)
)


Cita de: ResultadoEl servidor WWW.GOOGLE.COM responde.
El servidor NO.EXISTE no responde.
El servidor WWW.YAHOO.COM responde.