Skip to content

Instantly share code, notes, and snippets.

@xr09
Last active December 27, 2016 20:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xr09/3743d1cfea9fbb03292868b91027a4fd to your computer and use it in GitHub Desktop.
Save xr09/3743d1cfea9fbb03292868b91027a4fd to your computer and use it in GitHub Desktop.
from sandpiper import Domain
# credenciales del dominio windows
windows_config = {
'uri': "192.168.1.10",
'dn': "OU=dominio,DC=hlg,DC=emp,DC=cu",
'user': 'winuser',
'password': 'qwerty',
}
# credenciales del dominio zentyal
zentyal_config = {
'uri': "192.168.1.12",
'dn': "OU=ad,DC=hlg,DC=emp,DC=cu",
'user': 'Administrator',
'password': 'qwerty',
}
# instancias de la clase dominio
win = Domain(windows_config)
zen = Domain(zentyal_config)
# obtener datos del dominio Windows
win.pull_data()
# importar datos, actualizar DNs de usuarios y grupos
# del viejo al nuevo dominio
zen.import_domain(win)
# escribir datos el dominio zentyal
zen.push_data()
Sandpiper
=========
Biblioteca de programación Python para la Migración de Dominios
¿Para qué sirve?
----------------
Con esta biblioteca es posible crear abstracciones (en programación orientada a objetos) y tratar los datos del dominio desde una API Python, lo que puede resultar muy conveniente a la hora de realizar una migración que requiera cambios de estructura y/o metadatos de los usuarios. (un clásico ejemplo cambiar de nombre de dominio)
Requisitos
----------
* Dos servidores LDAP, cualquier implementación (AD, Zentyal, Samba)
* Credenciales de lectura para el dominio original y de administración para el nuevo.
* Python con la biblioteca ldap3
Ejemplo de una Migración
------------------------
El siguiente ejemplo de código representa una migración funcional de un dominio Windows a un Zentyal, se parte de un dominio original: "dominio.hlg.emp.cu" y se empleará el nuevo: "ad.hlg.emp.cu".
Al finalizar este proceso el dominio Zentyal contiene las mismas unidades organizativas, grupos de seguridad y usuarios que el dominio Windows, además los usuarios tendrán sus respectivos grupos de seguridad y los DN actualizados.
Ver Imagen 1.
¿Qué más puede hacer?
---------------------
Virtualmente cualquier cosa, al ser una API Python es posible intervenir en cualquier punto del proceso de migración y modificar, eliminar o adicionar datos. En la DTHO teníamos un Active Directory y un 389DS, encuestamos el dominio AD y al mismo tiempo le inyectamos los atributos UNIX (UID, GID, shell, home) extraídos del 389.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment