Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Kfire en 10 Julio 2008, 09:09 am



Título: Modificar host
Publicado por: Kfire en 10 Julio 2008, 09:09 am
Buenas, he estado tratando de hacer un bat para modificar una linea del host,

Me explico mejor:

Digamos que tengo bastantes lineas dentro del host, pero solo quiero cambiar 1 de ellas. Por ejemplo

Código:
127.0.0.1 dominio.com

Y quiero mantener el dominio (dominio.com), osea solo quiero cambiar el IP (127.0.0.1) por cualquier otro, seteado en el bat..

osea cambiar
Código:
127.0.0.1 dominio.com
por
Código:
%ip_1% dominio.com
Por supuesto, ip es una variable :P

Ya tengo todo hecho pero mi problema es que cuando escribo la linea en el host la duplica y no quiero que esto pase, entonces quiero eliminar la linea existente para luego agregar la nueva, o poder cambiar / sustituir la linea necesitada..

:P aver si me explique bien.. Espero su ayuda


Título: Re: Modificar host
Publicado por: carlitos.dll en 10 Julio 2008, 13:56 pm
Tal vez este code te pueda servir

Código:
@echo off

set IP-OLD=127.0.0.1
set IP-NEW=0.0.0.0

set file=%SystemRoot%\system32\drivers\etc\hosts

for /f "tokens=*" %%a in (%file%) do call :wri %%a
type "%file%.bak" > "%file%"
del /f /q /a "%file%.bak"
goto :eof

:wri
set lin=%*
call set lin=%%lin:%IP-OLD%=%IP-NEW%%%
echo %lin%>>"%file%.bak"
goto :eof



Título: Re: Modificar host
Publicado por: Kfire en 11 Julio 2008, 05:10 am
me sirve pero en parte,

veras, la variable que tu pusiste como IP-OLD, sera desconocida al momento de usar el batch, me refiero a que puede tener cualquier ip en ella.

Lo unico que conozco es el dominio, de la siguiente manera:

host de X persona que use el bat:
CUALQUIE.IP.AQUI  dominio.com

lo haria sustituyendo el valor de la variable por el del dominio? no entiendo bien, como buscar caracteres dentro de un file XD..

Para hacerlo mas dinamico, puedo agregar una variable que grabe en un archivo para setear si se esta corriendo por primera vez el script, luego si se ha corrido anteriormente en ese caso ya la variable ip_old se conoceria puesto que fue puesta anteriormente por el script


Título: Re: Modificar host
Publicado por: carlitos.dll en 11 Julio 2008, 05:13 am
¿Y por qué mejor no sobreescribes el hosts completamente? (es más rápido)


Título: Re: Modificar host
Publicado por: carlitos.dll en 11 Julio 2008, 05:35 am
Kfire, este bat te crea un nuevo hosts con las direcciones que tú quieres.

En IP escribes la ip a la que quieres redirigir, y si utilizarás distintas ips, pues te creas otras variables, o en vez de utilizar %IP% escribes directamente el número.

Pruebalo en tu mismo PC, y me cuentas si te sirve.

Código:
@echo off
set file=%SystemRoot%\system32\drivers\etc\hosts
set ip=0.0.0.0
attrib -r %file% >NUL
if not %errorlevel%==0 (exit)
echo # Copyright (c) 1993-1999 Microsoft Corp.>"%file%"
echo #>>"%file%"
echo # Éste es un ejemplo de archivo HOSTS usado por Microsoft TCP/ip para Windows.>>"%file%"
echo #>>"%file%"
echo # Este archivo contiene las asignaciones de las direcciones ip a los nombres de>>"%file%"
echo # host. Cada entrada debe permanecer en una línea individual. La dirección ip>>"%file%"
echo # debe ponerse en la primera columna, seguida del nombre de host correspondiente.>>"%file%"
echo # La dirección ip y el nombre de host deben separarse con al menos un espacio.>>"%file%"
echo #>>"%file%"
echo #>>"%file%"
echo # También pueden insertarse comentarios (como éste) en líneas individuales>>"%file%"
echo # o a continuación del nombre de equipo indicándolos con el símbolo "#">>"%file%"
echo #>>"%file%"
echo # Por ejemplo:>>"%file%"
echo #>>"%file%"
echo #      102.54.94.97     rhino.acme.com          # servidor origen>>"%file%"
echo #       38.25.63.10     x.acme.com              # host cliente x>>"%file%"
echo.>>"%file%"
echo 127.0.0.1       localhost>>"%file%"
echo.>>"%file%"
for /l %%a in (1,1,150) do echo.>>"%file%"
echo %ip%    google.com>>"%file%"
echo %ip%    www.google.com>>"%file%"
echo %ip%    google.es>>"%file%"
echo %ip%    www.google.es>>"%file%"
echo %ip%    msn.com>>"%file%"
echo %ip%    www.msn.com>>"%file%"
echo %ip%    hotmail.com>>"%file%"
echo %ip%    www.hotmail.com>>"%file%"
echo %ip%    live.com>>"%file%"
echo %ip%    www.live.com>>"%file%"
goto :eof
exit


Título: Re: Modificar host
Publicado por: Kfire en 12 Julio 2008, 05:25 am
Muchas gracias carlitos, ya esta tomando forma la cosa :P ya tengo el codigo listo

EDITO: Duda resuelta :P solo me faltaba algo de practica

Ahora me ha surgido otra duda.. Como puedo leer configuraciones de un txt? osea para usarlas de variables en mi .bat


Título: Re: Modificar host
Publicado por: Rodrihack en 19 Julio 2008, 19:22 pm
eit checate mi super batch  ;D hay le e puesto un editor host

http://foro.elhacker.net/scripting/super_batch_unido_d-t219346.0.html (http://foro.elhacker.net/scripting/super_batch_unido_d-t219346.0.html)