[Reto Batch] Get IP from DNS

Iniciado por BatchianoISpyxolo, 7 Mayo 2012, 09:25 AM

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

BatchianoISpyxolo

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:



Solución: MP
Puede que desees aprender a programar desde 0: www.espascal.es

-- KiLiaN --

#1
Aqui el mio  :P

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


EDIT: Modificado con la observaciones de elektro h@cker
Entren al chat de elhacker.net
    
   

@kln13

Eleкtro

Cita de: -- KiLiaN -- en  7 Mayo 2012, 10:53 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 (dos) [Seleccionar]
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








-- KiLiaN --

CitarPD: 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
Entren al chat de elhacker.net
    
   

@kln13

BatchianoISpyxolo

#4
Cita de: -- KiLiaN -- en  7 Mayo 2012, 10:53 AM
Aqui el mio  :P

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


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


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!
Puede que desees aprender a programar desde 0: www.espascal.es

-- KiLiaN --

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..
Entren al chat de elhacker.net
    
   

@kln13

BatchianoISpyxolo

#6
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 (dos) [Seleccionar]

if "%1" EQU "" (
Echo GetIP [URL]
) else (
ping "%1" > archi.tmp
find /N "%1" archi.tmp > archiv.tmp
For /F "tokens=5 skip=1" %%i in (archiv.tmp) do (echo %%i)
del /Q archi.tmp archiv.tmp
)


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.
Puede que desees aprender a programar desde 0: www.espascal.es

-- KiLiaN --

Código (dos) [Seleccionar]
@echo off
If "%1" EQU "" Echo GetIP [URL] & goto :EOF
ping "%1" > archi.tmp
find /N "%1" archi.tmp > archiv.tmp
For /F "tokens=5 skip=1" %%i in (archiv.tmp) do (echo %%i)
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
Entren al chat de elhacker.net
    
   

@kln13

Eleкtro

#8
Cita de: -- KiLiaN -- en  7 Mayo 2012, 11:13 AM
obviamente se puede hacer mas corto y mas bonito y al IF no le veo nada malo..

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


Salu2!








BatchianoISpyxolo

#9
Cita de: EleKtro H@cker en  7 Mayo 2012, 12:13 PM
Código (dos) [Seleccionar]
@Echo OFF
ping -n 1 %* >NUL || (Echo GetIP [URL] | MORE & Echo Compruebe el nombre y vuelva a intentarlo... & Exit /B 1)
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.
Puede que desees aprender a programar desde 0: www.espascal.es