jueves, 13 de diciembre de 2012

Creación de archivos por lotes para pequeñas cosas. Parte 3: Script para añadir direcciones IP manualmente.

Sé que en principio iban a ser solo dos partes de esta "saga", pero he descubierto nuevas utilidades para esto. 

Hace relativamente semanas (Más bien días) decidí desempolvar mis viejos scripts que usaba en el curso para cambiar direcciones IP de manera rápida y eficaz (Véase la primera parte de ésta "coletilla de sagas". Enlace aquí.) El caso es que me puse a revisar bien los scripts y pensé "Tío, molaría un script en el que las direcciones IP las pusiera yo y no tuviera que andar entrando en el archivo para editar". Investigué un poco de programación en éste lenguaje (un cacho de nada, solamente lo importante y útil) y encontré por fin la solución.

Haciendo memoria (para los que quieran un flashback más extenso, ver el enlace anterior):

Comandos que introducimos para cambiar las direcciones:

Para IP, Máscara de red y Gateway:

netsh interface ip set address "{adaptador a usar}" static {Dirección IP} {Máscara de red} {Gateway}

Para los DNS:

netsh interface ip add dns "{adaptador a usar}" {DNS primario}

netsh interface ip add dns "{adaptador a usar}" {DNS secundario} index=2

Cómo realizar el script

Para introducir datos en el script, tendremos que utilizar una variable que permita la entrada de texto. Yo he elegido una solución "guarrera" que consiste en introducir los datos como si fueran variables de entorno y, después de introducirlas, borrarlas.

PD: Si alguien tiene una solución más limpia, favor de decírmela. Programación de éste tipo de cosas, en cmd, NUNCA ha sido lo mío.

1. Identificamos las variables a usar.

Son 5: IP, Máscara, Gateway, DNS1 y DNS2. Podemos llamarla como queramos. Yo por ejemplo, las he llamado:

IP - direccionip
Máscara de red - mascarared
Gateway - gatewayy (con dos y)
Primary DNS - primardns
SecondaryDNS - seconddns

2. Montamos el tinglado.

Para introducir los datos, haremos un "echo" intermedio. Así, nos irá preguntando el programa cada cosa a insertar. Por ejemplo:

echo "Introduce la dirección IP"

Ahora, la parte "difícil" para meter las direcciones: La entrada de datos.

Para introducir, utilizaremos el comando set /p: /p es un modificador de variable, que se utiliza para introducir la misma.

Íbamos por la IP ¿No? Montaremos el comando de ésta manera:


set /p direccionip=

En la continuación del signo igual va lo que introducimos.


Hecha la primera, hacemos lo mismo con las demás. (El ejemplo de script está más abajo, si tienes duda, consulta mas abajo)

Una vez fijadas las variables, usaremos las anteriores líneas de comando netsh para utilizar el script. Para que funcionen ahora las variables, debemos meter entre porcentajes las variables de entorno que hemos introducido. Si la variable es Pericopalito, en los comandos se utiliza con %pericopalito%

Así, por ejemplo, en la línea de netsh anterior, en donde ponemos la dirección IP debemos poner %direccionip%, o en gateway, poner %gatewayy%

Una vez tenemos todo escrito y bien configurado, pasaremos a eliminar las variables.
Para eliminarlas, debemos introducir de nuevo el comando set, pero sin el modificador /p.

El script completo

# Parte 1: Variables a introducir. 

# echo Introduce el nombre de adaptador que quieres modificar
# set /p nominterfaz=
# echo Introduce la dirección IP que quieres
# set /p direccionip=
# echo Introduce la máscara de red a usar
# set /p mascarared=
# echo Introduce el gateway
# set /p gatewayy=
# echo Introduce el DNS primario
# set /p primardns=
# echo Introduce el DNS secundario
# set /p seconddns=


# Parte 2: Comandos que se usan con las variables definidas.


# netsh interface ip set address "%nominterfaz%" static %direccionip% %mascarared% %gatewayy%
# netsh interface ip add dns "%nominterfaz%" %primardns%
# netsh interface ip add dns "%nominterfaz%" %seconddns% index=2


# Parte 3: Borrado de variables.

# set nominterfaz=
# set direccionip=
# set mascarared=
# set gatewayy=
# set primardns=
# set seconddns=


Las almohadillas las he puesto para "citar" el script. Deben borrarse para que se inicie de forma correcta.

El archivo debe tener la extensión .bat.
Si se fijan en la imagen subida, yo le tengo puesto de nombre "persoipcable.bat"

Script1sindatos

script2completo


Como ven, el script funciona bien.

Si quieren luego quitar las direcciones IP, usen el script de la otra entrada (El de poner en DHCP las interfaces).

Y como es normal, necesita derechos de administrador para ser ejecutado.

Próximamente, los programas personalizados del R.A.T 7 (cuando los acabe)


Fuentes:

Anterior entrada.
Experiencia propia.
Microsoft y sus páginas de ayuda. (No pongo el enlace porque ahora mismo no lo encuentro)

EXTRA (Actualizado el 20-12-12)

Se puede utilizar también el nombre del adaptador, para así tener uno específico. Actualizo los datos del actual (Las imágenes no las actualizo, pero funciona igual)