Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: edunardo en 6 Febrero 2009, 20:01 pm



Título: [Batch] el error level del ping me está chuleando ¡¡
Publicado por: edunardo en 6 Febrero 2009, 20:01 pm
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


Título: Re: el error level del ping me está chuleando ¡¡
Publicado por: edunardo en 6 Febrero 2009, 20:15 pm
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



Título: Re: el error level del ping me está chuleando ¡¡
Publicado por: Banti en 7 Febrero 2009, 02:36 am
ping host -n 2 -w 300 || (%res%==1)

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


Título: Re: el error level del ping me está chuleando ¡¡
Publicado por: Darioxhcx en 7 Febrero 2009, 18:58 pm
if %res%==1
hay no estara el error , q falto un if ?


Título: Re: el error level del ping me está chuleando ¡¡
Publicado por: leogtz en 7 Febrero 2009, 21:54 pm
Código:
@echo off
:: 1 responde, 0 no responde.
ping -n 2 www.google.com && (set "res=1") || (set "res=0")
echo.%res%


Título: Re: el error level del ping me está chuleando ¡¡
Publicado por: edunardo en 9 Febrero 2009, 15:49 pm
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)


Título: Re: el error level del ping me está chuleando ¡¡
Publicado por: leogtz en 9 Febrero 2009, 17:59 pm
Código:
@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 :
Código:
@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
)
)
)
Código:
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.


Título: Re: el error level del ping me está chuleando ¡¡
Publicado por: _m en 9 Febrero 2009, 18:06 pm
Código:
@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: Resultado
El servidor WWW.GOOGLE.COM responde.
El servidor NO.EXISTE no responde.
El servidor WWW.YAHOO.COM responde.