Realizar una consulta LDAP por línea de comando en Unix/Linux

Normalmente utilizamos aplicaciones GUI para revisar árboles LDAP, como Active Directory. Sin embargo hay situaciones en que sólo contamos con una conexión tipo Telnet/SSH que nos entrega sólo acceso a la línea de comando de la máquina remota, sin posibilidad de enviar ventanas por X Windows u otro medio.

OpenLDAP

Luego de revisar múltiples opciones hemos visto que claramente el estándar en cuando a cliente LDAP lo constituye OpenLDAP, ampliamente usado como servidor (en su forma slapd).
OpenLDAP viene con un conjunto de herramientas cliente que permiten consultar y modificar un árbol LDAP.
Estas aplicaciones pueden ser obtenidas en la forma de un RPM independiente de la versión que viene con el servidor, o compilando únicamente los clientes en una distribución OpenLDAP de código fuente (a través de configure –disable-slapd).

ldapsearch

De todos los programas incluídos en el paquete, usaremos ldapsearch. Este comando devuelve en formato LDIF la parte del árbol sobre la que hemos consultado.
Nuestra consulta de ejemplo para un árbol Active Directory es:

ldapsearch -LLL -h maquinaAD.dominioficticio.cl -p 389 -x
-D “cn=CuentaLDAP,cn=Users,DC=dominioficticio,DC=cl”
-w password -b “cn=users,DC=dominioficticio,DC=cl”

La explicación es la siguiente:

  • -LLL : define el tipo de formato LDIF que entregará el comando. Las tres L permiten obtener una salida que es importable vía los comandos de manipulación LDIF adecuados.
  • -h maquinaAD.dominioficticio.cl: corresponde al host donde se encuentra el árbol.
  • -p 389: el puerto sobre el que atiende el servidor.
  • -x :Usar autentifiación simple en lugar de TLS.
  • -D “cn=CuentaLDAP,cn=Users,DC=dominioficticio,DC=cl”: indica la entrada (usuario) a la que nos uniremos (bind, es decir, nos autentificaremos) para hacer las consultas. Esto es especialmente importante, como es lógico, para los árboles LDAP que no permiten ingresos anónimos. La ubicación puede cambiar de cn=Users a la que el árbol LDAP al que estamos conectándonos esté ocupando.
  • -w password: la contraseña para el bind con el dato anterior.
  • -b “cn=users,DC=dominioficticio,DC=cl”: la base de búsqueda.