sábado, 2 de julio de 2011

Massive FaceBook Invites!


No sé si será por cuestiones de privacidad, para evitar el spam o porque simplemente no quisieron poner un botón, pero resulta extramandamente denso tener que seleccionar a TODOS tus "amigos" uno por uno, por ejemplo, en una invitación a una web, en una encuesta, o lo que sea.

Para seleccionar todos a la vez, cuando se abra la ventana de selección de "amigos", pegar lo siguiente en la barra de direcciones y darle al Enter:

javascript:function check_all_in_document(doc){var c=new Array();c=doc.getElementsByTagName('input');for(var i=0;i<c.length;i++){if(c[i].type=='checkbox'){c[i].click();}}}check_all_in_document(window.document);for(var j=0;j<window.frames.length;j++){check_all_in_document(window.frames[j].document);}

Esto selecciona a todos con tan solo un Enter!

También existe un complemento de GreaseMonkey para FireFox que cumple la misma función, se descarga de: http://userscripts.org/scripts/show/43682
Hace otras cosas interesantes el Script, asi que se los recomiendo.

viernes, 1 de julio de 2011

Security Translation

En una migración de dominio la herramienta ADMT (Active Directory Migration Tool) es indispensable.

No obstante, en algunas situaciones se torna un tanto tosca y poco versatil.

Por ejemplo, si estamos corriendo un Security Translation a X cantidad de equipos, y surge un nuevo equipo, no se lo puede agregar hasta que termine la primer tanda (podés probarlo, lo mas probable es que se cierren ambos módulos y que el Security no corra en ninguna PC).

Por suerte tenemos nuestra amiga la consola! Y sus batchs... podemos armar tantos batchs como queramos, y correr el Security tantas veces sea necesario, incluso en paralelo.

Para ello simplemente se debe escribir un CMD o un Bat con el siguiente código:

ADMT security /n NOMBRE_DE_EQUIPO /sourcedomain:DOMINIO-VIEJO /targetdomain:DOMINIO-NUEVO /translationoption:add /translatefilesandfolders:yes /translatelocalgroups:no /translateprinters:yes /translateregistry:yes /translateshares:yes /translateuserprofiles:yes /translateuserrights:no /autoprecheckretry:yes /autoprecheckretryinterval:1 /autoprecheckretrynumber:3
pause

A tener en cuenta:
  • Se debe remplazar NOMBRE_DE_EQUIPO por el nombre de equipo. Se pueden especificar la cantidad de equipos que fuese necesaria,
  • En el atributo "/sourcedomain" se debe especificar el dominio del cual estamos migrando el equipo.
  • El atributo "/targetdomain" responde al dominio al cual migramos.
  • Los demás valores (como el autoPrecheckRetryNumber, y qué es lo que traduce, se pueden modificar a gusto.
IMPORTARTE:
Cada Security Translation pesa mucho en memoria! No correr en más de 50 equipos a la vez o se cuelga el módulo. (obviamente depende de las características del server, pero es mejor no ponerlo a prueba y asegurarse una correcta migración)

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."