Mejora la Experiencia de Navegación con la barra exclusiva de CRIVA-IT

viernes, 5 de agosto de 2011

Ejecutar script o batch por subred


For enghish support and procedure: riva.claudio@gmail.com - Visita Mi perfil de LINKEDIN -

Limitar la ejecución de un script (batch) dependiendo de la subred en la que se encuentre un equipo con Windows XP y 7.

Tuve la necesidad de que un script, en mi caso que se ejecutaba vía Group Policy, determinara antes de correr el resto de los comandos en si la subred donde se encontrara el equipo donde se estaba ejecutando era x o y.
Si era x, seguía su ejecución, si era y, finalizaba.

Entonces, lo que se me ocurrió para salir fácil y rápido del apuro por la implementación de este cambio, es tirar un "ipconfig" y luego concatenar dos sentencias con "find" para llegar en definitiva a comparar la dirección ip del equipo con una subred determinada y tomar acción dependiendo si coinciden estos valores o no.

Este es parte del código de mi script:

Seteo una variable cualquiera por defecto con un parámetro cualquiera (en mi caso es "null")


set ip="null"

Utilizo la función FOR, para poder almacenar la salida del comando
ipconfig | find /i "IP" | find /i "172.26" en la variable definida en el punto anterior.

for /F "tokens=2" %%A in ('ipconfig ^| find /i "IP" ^| find /i "172.26"') do set ip=%%A

for /F "tokens=2" %%A in ('ipconfig ^| find /i "IP" ^| find /i "172.27"') do set ip=%%A

En mi caso verifique si dentro del resultado de ipconfig se encontraban los strings "IP", 172.26 y 172.27 (reemplacen esto por las subredes que deseen) y si esto se cumple que se ejecute una función determinada y si no que finalice la ejecución del script.


if %ip%==Address. goto :funcion1
if %ip%==IP. goto :funcion1
if %ip%=="null" exit


Si bien el resultado del comando ipconfig | find /i "IP" | find /i "172.26" es el siguiente:
Direcci¾n IP. . . . . . . . . . . : 172.26.70.30
La variable queda cargada con los valores "IP." (IP punto) o "Address." (Address punto), dependiendo del idioma del sistema operativo (en mi caso contemplo ambos idiomas)


Si lo desean, pueden copiar y pegar el siguiente código dentro de un .bat y ejecutarlo para ver su funcionamiento:

@echo off
set ip="null"
for /F "tokens=2" %%A in ('ipconfig ^| find /i "IP" ^| find /i "172.27"') do set ip=%%A


echo %ip%
PAUSE

if %ip%==Address. echo coincide
if %ip%==IP. echo coincide
if %ip%=="null" echo nop
PAUSE



Recuerden que si van a probar línea por línea en una consola de DOS en lugar de un batch, deben reemplazar donde dice %%A por %A y quitar el símbolo ^ (ALT+94) que está antes de los | (ALT+124)



Ojalá los ayude y por favor respondan la encuesta comentado si les fue útil la información para poder mejorar el contenido.



For enghish support and procedure: riva.claudio@gmail.com - Visita Mi perfil de LINKEDIN -

No hay comentarios.:

Publicar un comentario

Si necesitas asistencia sobre algún tema de Microsoft o Android no tratado aquí envíame un e-mail a riva.claudio@gmail.com y con gusto crearé un post para intentar ayudarte.
Agradezco muchísimo si puedes colaborar con un CLIC en cualquier publicidad de este blog.