martes, marzo 25, 2014

Perl, consultar el directorio activo (active directory de Windows)

Para consultas del directorio activo tendremos que instalar el módulo NET::Ldap.
Hay muchas referencias en Internet para el acceso a servidores LDAP, pero pocas se refieren al Directorio Activo de Microsoft (Active Directory).

Me he descargado el DWIMPerl para Windows, y voy a utilizar el editor perl que trae el mismo, que se llama PADRE.

Lo primero es conseguir conectarse al servidor.


Si el resultado es SUCCESS, ya podemos continuar con las consultas.

En este momento deberíamos conectarnos al directorio activo y mirar en una de las entradas que nos interesan cómo se llaman los ATRIBUTOS por lo que podemos preguntar.


Ahora que ya tenemos claro eso, podemos terminar el programa que aplica un filtro a la consulta, y luego recorre las entradas devueltas imprimiendo en pantalla los atributos que nos interesen:


Así queda el programa:


#!/usr/bin/perl

 use Net::LDAP;

 my $usuario = "dominio\\usuarioAdministrador";
 my $password = "password";
 
 my $servidorLdap = "ldap://servidor.dominio.es";

 # conexion al servidor
 $ldap = Net::LDAP -> new ($servidorLdap) || die "No me he podido conectar al servidor\n";

 # validarnos en el servidor
 $mensaje = $ldap -> bind($usuario, password => $password);
 $resultado = sprintf("%s",$mensaje->error);
 
 # Establecemos el filtro que nos interesa: 
 $filtro = "objectClass=group";

 # Lanzamos la consulta:
 $resultado = $ldap -> search(filter => "(&($filtro))", base => "DC=dominio,DC=es");
 
 # Miramos el numero de entradas que cumplen el filtro:
 my $numero = $resultado -> count;
 
 # Por cada respuesta escribimos en una linea el nombre y cuando ha cambiado la entrada:
 my $count = $resultado -> count;
 for (my $i=0; $i<$count; $i++) {
     $entry = $resultado->entry($i);
     print $entry->get_value('CN').", ".
           $entry->get_value('whenChanged')."\n";
}

 # Nos desconectamos:
 $mensaje = $ldap->unbind;

No hay comentarios: