jueves, 30 de junio de 2011

Reinicio remoto

Con el objeto de reiniciar muchas máquinas dentro de un mismo dominio (asumiendo que se tiene el permiso de administrador sobre dichos equipos), se debe armar un script (en .bat o .cmd) con el famoso comando de D.O.S.: "Shutdown".

Se lo puede personalizar para que envíe un mensaje, e incluso para que reinicie el equipo en X cantidad de tiempo.

Para tal efecto, el script lo tengo armado en dos partes, la primera llamada "Reboot ALL Computers 30 min.cmd" con el siguiente script:

@For /F "tokens=1" %%a in (Equipos.txt) do start Reboot30m.cmd %%a

Lo que hace es levantar los equipos de un documento de texto bajo el nombre de "Equipos.txt" (un equipo por linea!), y asignarle la variable "%%a", para luego ejecutar otro CMD.

El siguiente CMD, al que llama el primero, tiene el nombre de "Reboot30m.cmd", y contiene las siguientes lineas:

Shutdown -r -f -m %1 -t 1800 -c "Tenga en cuenta que en 30 minutos el equipo se reiniciara. Guarde todos sus datos!"
Exit

El atributo "-r" hace que el equipo se reinicie, a su vez el "-f" hace que sea forzado (es decir, no espera a que se cierren o guarden las cosas, por ello el mensajito!).
-m es la máquina remota, que la topa de la variable que definimos anteriormente.
-t es el tiempo en segundos, y por último -c es el mensaje a mostrar en la máquina cliente a reiniciar.

miércoles, 29 de junio de 2011

Crear objetos en dominio

A veces se da la situación de que tenemos que crear varios objetos en un dominio, y si además tenés que aplicarle algún GPO el proceso se vuelve tedioso.

Para ello existen los batchs! Que automatizan todo el proceso.


Simplemente armar un .txt y luego cambiarle la extensión a .bat o .cmd y pegar lo siguiente:

set varOU=CAPBA
for /f "tokens=1" %%c in (equiposCrear.txt) do (dsadd computer "CN=%%c,OU=%varOU%,OU=Buenos Aires,OU=Argentina,OU=Clientes-Estandares,OU=CLIENTES,DC=grupo,DC=DOMINIO,DC=com" -memberof "CN=GPO_NO-APLICA-EXPROFE,OU=Appl,OU=Aplicaciones,OU=GRUPOS,DC=grupo,DC=DOMINIO,DC=cOM" -d DOMINIO)

Donde dice "set varOU=CAPBA" se debe remplazar por la OU que desean agregar el equipo.
Todo lo que precede a "-memberof" es el GPO al que queremos que un equipo pertenezca.

Los equipos se deben tirar en un .txt bajo el nombre de "equiposCrear.txt", el documento de texto debe contener un equipo por linea para que funcione correctamente el script.

Se debe modificar el script, logicamente, con los datos del dominio (en este caso: GRUPO.DOMINIO.COM ; que es igual a CN=grupo,CN=DOMINIO,CN=com)

martes, 28 de junio de 2011

Registro de DNS

Siguiendo el hilo del post anterior, también se puede saber el domino de un equipo consultando cual es el DNS en el que se registra.

Para saber en qué dominio un equipo está registrando los DNS, basta con escribir:

nslookup NOMBRE_DE_EQUIPO

 Si se quisiera realizar de forma automatizada, se debe armar un batch (.BAT o .CMD) con lo siguiente:

@echo off
for /f %%a in (C:\Script\lista.txt) do call :process %%a
goto :eof
:process
set srv=%1
for /f "tokens=2" %%b in ('nslookup %srv%^|find /i "Name"') do echo %srv% dominio  %%b >> C:\Script\nslookup_results.txt

 Este batch exportará la información que el comando NSLOOKUP consiga de los equipos dentro del archivo "lista.txt" y la plasmará en un txt llamado "nslookup_results.txt".

El resultado sería algo así:

S409623 dominio  S409623.mi.dominio.com

lunes, 27 de junio de 2011

Información remota

Estando en un proyecto de migración de dominio me resulta indispensable saber en qué dominio se encuentra cada uno de los equipos.

Para ello bastaría con hacer click derecho en "Mi PC", luego ir a "Propiedades" y finalmente clickear en el TAB de "Nombre de Equipo".

Para mi fortuna, son mas de seis mil equipos en la compañía, con lo cual tuve que buscar una alternativa que de forma remota me traiga esta información, y me topé con WMIC.

WMIC es una poderosa herramienta que trabaja en linea de comandos. Esta herramienta puede obtener de forma remota miles de datos e incluso ejecutar varios comandos.

Bastaría con escribir "wmic /node:NOMBRE_DE_EQUIPO computersystem get domain /value" para que me traiga el dominio en el que se encuentra.
(note for noobs: NOMBRE_DE_EQUIPO se debe remplazar por el nombre del equipo a consultar).

Para automatizar este proceso hay que plasmar este comando en un proceso batch (BAT o CMD).

He aqui el código:
@echo off
date /t > C:\Script\wmic_results.txt
for /f %%a in (C:\Script\lista.txt) do call :process %%a
goto :eof
:process
set srv=%1
for /f "tokens=2 delims==" %%b in ('wmic /node:%srv% computersystem get domain /value') do echo %srv%    %%b >> C:\Script\wmic_results.txt
Esto se debe escribir en un .BAT o un .CMD, y ejecutarlo bajo la cuenta de Domain Admin (o con privilegios para administrar la máquina remota).

Tener en cuenta que para el script se debe crear una carpeta en C:\ llamada "Script", y crear un archivo de texto llamado lista.txt, el cual debe contener todos los equipos que necesitemos la información de dominio.

Dará como resultado un documento de texto llamado "wmic_results.txt" que tendrá algo similar a esto:

Thu 06/23/2011 
k409623    mi.dominio.com

domingo, 26 de junio de 2011

Obtener datos del Active Directory

Muchas veces uno necesita extraer datos de determinados campos (o atributos) del Active Directory y plasmarlos en una planilla para poder trabajar con ellos.


Para ello existe una función que yo llamo "ObtDatos".


La sintaxis para llamar la función sería la siguiente:

"=ObtDatos(CAMPO DE BUSQUEDA, valor a buscar, Devolver CAMPO)"

En un caso práctico, esta función quedaría de la siguiente forma:

=ObtDatos(“cn”; A2; “mail”)


Suponiendo que en la celda "A2" tenemos el "CN" (Canonical Name), y queremos como resultado el "Mail".

Esta misma función se puede aplicar a todos los atributos de LDAP.

sábado, 25 de junio de 2011

Otra vez

Una vez mas reabriendo el blog.


"La vida es un largo camino de tolerancia a la frustración."