Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: BatchianoISpyxolo en 7 Mayo 2012, 09:25 am



Título: [Reto Batch] Get IP from DNS
Publicado por: BatchianoISpyxolo en 7 Mayo 2012, 09:25 am
Otro más de comandos... (y último :P)

Reto iniciado por Batchiano

Reto Nº 12

Nombre:          Get IP from DNS
Dificultad:       4/10
Objetivo:         Crear un comando que, al enviar un DNS, devuelva la IP adjunta a dicho DNS
Indicaciones:  Es obligatorio utilizar FOR.
Pista:               PING.
Ejemplo:

(http://img405.imageshack.us/img405/6866/31092320.png)

Solución: MP


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: -- KiLiaN -- en 7 Mayo 2012, 10:53 am
Aqui el mio  :P

Código
  1. @echo off
  2. If "%1" EQU "" Echo GetIP [URL]
  3. ping "%1" > archi.tmp
  4. find  /N "%1" archi.tmp > archiv.tmp
  5. For /F "tokens=5 skip=1" %%i in (archiv.tmp) do (echo %%i)
  6. del /Q archi.tmp archiv.tmp
  7. Exit /B

EDIT: Modificado con la observaciones de elektro h@cker


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: Eleкtro en 7 Mayo 2012, 11:06 am
Aqui el mio  :P

Funciona :), Pero déjalo así para que no mande tantas peticiones y no tarde ni medio segundo en mostrar la ip...
Código
  1. ping -n 1 "%1" > archi.tmp

PD: Usa "Exit /B" a la hora de "Hacer comandos" para no terminar la instancia de la CMD :P

Salu2


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: -- KiLiaN -- en 7 Mayo 2012, 11:10 am
Citar
PD: Usa "Exit /B" a la hora de "Hacer comandos" para no terminar la instancia de la CMD

Buen apunte, en todos los aspectos, maestro xD


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: BatchianoISpyxolo en 7 Mayo 2012, 11:12 am
Aqui el mio  :P

Código
  1. @echo off
  2. If "%1" EQU "" Echo GetIP [URL]
  3. ping "%1" > archi.tmp
  4. find /N "%1" archi.tmp > archiv.tmp
  5. For /F "tokens=5 skip=1" %%i in (archiv.tmp) do (echo %%i)
  6. del /Q archi.tmp archiv.tmp

Funciona aunque lo mismo que en el anterior reto: estructura if-else

Código:
if Expresión-booleana (
acciones (TRUE)
) else (
acciones (FALSE)
)

PD: se puede acortar el código y no hace falta crear achivos temporales.

¡Buen trabajo!


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: -- KiLiaN -- en 7 Mayo 2012, 11:13 am
La única solución no es la que tu hayas hecho si funciona el codigo debería darse por bueno digo yo, ya que hay varias formas de hacer lo mismo..obviamente se puede hacer mas corto y mas bonito y al IF no le veo nada malo..


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: BatchianoISpyxolo en 7 Mayo 2012, 11:21 am
Pues mira, el IF está mal porque aunque el usuario no introduzca ninguna url, el comando trata de obtener la ip de una url que no ha sido recibida. Por lo tanto estás haciendo ping "" > archi.tmp porque %1 es una cadena vacía... entonces:

Código
  1. if "%1" EQU "" (
  2. Echo GetIP [URL]
  3. ) else (
  4. ping "%1" > archi.tmp
  5. find /N "%1" archi.tmp > archiv.tmp
  6. For /F "tokens=5 skip=1" %%i in (archiv.tmp) do (echo %%i)
  7. del /Q archi.tmp archiv.tmp
  8. )

No quiero que se me interprete mal. Yo no estoy riñendo a nadie xD. Cuando yo empecé en Batch hacía igual que tú... Buen trabajo como dije antes.


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: -- KiLiaN -- en 7 Mayo 2012, 11:28 am
Código
  1. @echo off
  2. If "%1" EQU "" Echo GetIP [URL] & goto :EOF
  3. ping "%1" > archi.tmp
  4. find /N "%1" archi.tmp > archiv.tmp
  5. For /F "tokens=5 skip=1" %%i in (archiv.tmp) do (echo %%i)
  6. del /Q archi.tmp archiv.tmp

Asi no hace falta el else..

PD: no te tomes a mal tampoco mis palabras, yo no me tomé a mal las tuyas xD


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: Eleкtro en 7 Mayo 2012, 12:13 pm
obviamente se puede hacer mas corto y mas bonito y al IF no le veo nada malo..

Código
  1. @Echo OFF
  2. ping -n 1 %* >NUL || (Echo GetIP [URL] | MORE & Echo Compruebe el nombre y vuelva a intentarlo... & Exit /B 1)
  3. For /F "tokens=2 delims=[]" %%# in ('ping -n 1 %*') do (Echo %%# & Exit /B 0)

Salu2!


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: BatchianoISpyxolo en 7 Mayo 2012, 12:41 pm
Código
  1. @Echo OFF
  2. ping -n 1 %* >NUL || (Echo GetIP [URL] | MORE & Echo Compruebe el nombre y vuelva a intentarlo... & Exit /B 1)
  3. For /F "tokens=2 delims=[]" %%# in ('ping -n 1 %*') do (Echo %%# & Exit /B 0)

Salu2!

Genial. Y genial lo de la condición lógica :) Yo al for le había añadido skip=1 aunque no hace falta.


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: 79137913 en 9 Mayo 2012, 14:33 pm
HOLA!!!

ALGUIEN paseme el Ping.exe, Tracert.exe, Sort.exe de algun win/xp/sp3/32bits

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: 79137913 en 10 Mayo 2012, 16:58 pm
HOLA!!!

(sorry por el 2ble post, es para hacer bumping)

Si no me quieren pasar el ping.exe y los demas, pasenme la salida de
ping.exe www.google.com

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: BatchianoISpyxolo en 10 Mayo 2012, 17:00 pm
HOLA!!!

(sorry por el 2ble post, es para hacer bumping)

Si no me quieren pasar el ping.exe y los demas, pasenme la salida de
ping.exe www.google.com

GRACIAS POR LEER!!!


Citar
C:\>ping www.google.com

Haciendo ping a www.l.google.com [173.194.34.17] con 32 bytes de datos:
Respuesta desde 173.194.34.17: bytes=32 tiempo=377ms TTL=51
Respuesta desde 173.194.34.17: bytes=32 tiempo=523ms TTL=51
Respuesta desde 173.194.34.17: bytes=32 tiempo=541ms TTL=51
Respuesta desde 173.194.34.17: bytes=32 tiempo=291ms TTL=51

Estadísticas de ping para 173.194.34.17:
    Paquetes: enviados = 4, recibidos = 4, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 291ms, Máximo = 541ms, Media = 433ms


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: 79137913 en 10 Mayo 2012, 17:35 pm
HOLA!!!

Código
  1. @echo off
  2. SETlocal enabledelayedexpansion
  3. ping "%1" > a.txt
  4. CLS
  5. for /f "tokens=*" %%x in (a.txt) do (set N=!N!%% style="color: #448888;">x)
  6. del /s /q a.txt
  7. CLS
  8. SET NUM=0
  9. :LOOP
  10. call set CHAR=%%N:~%NUM%,1%%%
  11. set /a NUM+=1
  12. IF "%CHAR%"=="[" (SET /A IPSTART=%NUM%
  13. GOTO LOOPB)
  14. GOTO LOOP
  15. :LOOPB
  16. call set CHAR=%%N:~%NUM%,1%%%
  17. set /a NUM+=1
  18. IF "%CHAR%"=="]" (SET /A IPEND=%NUM%
  19. GOTO IPTERMINADO)
  20. GOTO LOOPB
  21. :IPTERMINADO
  22. SET /A AUX=%IPEND%-%IPSTART%-1
  23. CALL SET IP=%%N:~%IPSTART%,%AUX%%%%
  24. ECHO [IP]: %IP%

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: Binary_Death en 22 Julio 2012, 00:44 am
Solución:

Código:
@Echo Off
if "%~1" EQU "" goto :eof
for /f "tokens=2 delims=[]" %%_ in (
'"ping %~1 -n 1"'
) do (echo: %%_)
exit /b

Pasa que, ahora que me fijo, viene a ser lo mismo que los otros códigos... Es que no se puede hacer distinto y mejor, tampoco  :xD


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: zikotik en 6 Febrero 2014, 16:47 pm
.


Título: Re: [Reto Batch] Get IP from DNS
Publicado por: zikotik en 7 Febrero 2014, 15:24 pm
Es lo más sencillo que se me ocurrió sin ser tan sinuoso con el FOR.

Código
  1. @echo off
  2. ping -n 1 %1 |find "%1">data.tmp
  3. for /f "tokens=2 delims=[]" %%a in (data.tmp) do (
  4. echo %%a
  5. del data.tmp
  6. )