Actualitzant els usuaris nous de l'Active Directory amb els la base d'usuaris de Drupal

Actualitzant els usuaris nous de l'Active Directory amb els la base d'usuaris de Drupal

En aquest article t'explique com podem tenir el nostre Drupal actualitzat amb els usuaris existents de la base de dades de l'Active Directory de la nostra organització.

OBJECTIU
La gestió d'usuaris (altes, baixes i modificacions) i la gestió de projectes sempre és un tema important i, de vegades, complicat de gestionar. En la meua organització tenim més de 1.000 usuaris actius de diferents perfils en diversos projectes.

Fa temps vaig explicar com vaig importar usuaris (existents en la base de dades de l'Active Directory) a Drupal en l'article Important massivament un llistat de més de 1200 usuaris a Drupal. Després a Drupal hem configurat els usuaris amb diversos rols, depenent del projecte tenen un rol o un altre.

El problema és que cada setmana fem noves altes d'usuari a l'AD però aquestos nous usuaris no existeixen a Drupal. I si tornem a fer una importació global dels usuaris de l'Active Directory, actualtizarem tots els usuaris de Drupal però s'hauran esborrat les configuracions dels rols en els perfils dels usuaris i tots els perfils d'usuari estaran buits.

L'objectiu és tornar a fer una exportació dels usuaris de l'Active Directory, fer una exportació dels usuaris actuals de Drupal i importar, nomès, els nous usuaris que encara no existeixen a Drupal. D'aquesta manera ja tindrem incorporats els nous usuaris de l'AD en Drupal i com que el nostre projecte envia notificacions per correu electrònics als usuaris, ja podrem estar segur de que tots els usuaris han rebut les notificacions.

EXPORTEM ELS USUARIS ACTUALS DE DRUPAL
Començarem exportant els usuaris de Drupal. Ho farem creant una vista amb tots els noms d'usuaris, sense paginar ni res. I la configurarem en format taula:
sincronitzar usuaris active directory amb Drupal

Li direm que ens mostre 5.000 (actualment tenim 1.300 usuaris i així ens asegurem que la llista resultant no eixirà paginada):
sincronitzar usuaris active directory amb Drupal

I aquesta és la vista que anem a crear. Per últim configurem el nom de la ruta i ens la guardem:
sincronitzar usuaris active directory amb Drupal

I ara la fiquem, escrivint el nom de la nostra url amb eixa ruta, és a dir http://URL/exportacio-tots-els-usuaris, i veurem el llistat dels noms d'usuari existents al nostre Drupal:
sincronitzar usuaris active directory amb Drupal

Doncs bé, ara copiem eixe llistat i el peguem en un full de càlcul:
sincronitzar usuaris active directory amb Drupal

Guardarem els usuaris Drupal en format CSV amb el nom 1.csv:
sincronitzar usuaris active directory amb Drupal

Ara entrem en la terminal de PowerShell i exportarem tots els usuaris de l'Active Directory en un fitxer 2.csv amb el codi:

Get-ADUser -Filter * -SearchBase "OU=aytos,OU=NOM1, DC=NOM2,DC=NOM3" -Properties Mail | Select-Object SamAccountName, Mail | Export-Csv -Path "H:\2.csv" -NoTypeInformation -Encoding UTF8

I quedarà com es mostra a la següent captura de pantalla (he ocultat les dades sensibles de la meua organització per motius de seguretat):
sincronitzar usuaris active directory amb Drupal

I bé, ja tenim el fitxer amb els noms d'usuari exportats de Drupal 1.csv i també tenim el fitxer 2.csv amb tots els noms d'usuari i correus de l'Active Directory. I escriurem un script python (jo li he anomenat sincronitzacio.py):
sincronitzar usuaris active directory amb Drupal

Aquest script sincronitzacio.py compara els dos fitxers i generarà un nou fitxer, 3.csv amb els nous usuaris existents en l'Active Directory (2.csv) els quals no existeixen en la base de dades del Drupal. El codi d'aquest script és el següent:

# Programa python que genera un nou fitxer 3.csv amb els usuaris de l'Active Directory
# que encara no existeixen a la base de dades de Drupal.
import pandas as pd
#
# Llegir el fitxer 1 (només noms)
fitxer1 = pd.read_csv("1.csv", header=None, names=["Nom"])
#
# Llegir el fitxer 2 (noms i correus)
fitxer2 = pd.read_csv("2.csv")
#
# Filtrar els noms que no estan en el fitxer 1
fitxer_filtrat = fitxer2[~fitxer2["Nom"].isin(fitxer1["Nom"])]
#
# Guardar el resultat en un nou fitxer CSV
fitxer_filtrat.to_csv("3.csv", index=False)

Executarem l'script amb $ python3 ./sincronitzacio.py i obtindrem el nou fitxer 3.py amb els usuaris nous en Active Directory que encara no tenim a Drupal:
sincronitzar usuaris active directory amb Drupal

Podem obrir els tres fitxers CSV amb el full de càlcul i veurem que tenim ja clar el llistat dels usuaris actuals de Drupal, els usuaris actuals de l'Active Directory i, en el fitxer 3.csv, els nous usuaris que ens cal importar a Drupal:
sincronitzar usuaris active directory amb Drupal

Doncs bé, ja podem anar a la configuració d'usuaris del nostres projecte Drupal i, com que tenim el mòdul User CSV Import/ instal·lat, podem fer click sobre el botó "Import users from CSV:
sincronitzar usuaris active directory amb Drupal

Un exemple del fitxer CSV seria:

username, mail
joan, joan@xxx.com
pascualet, pascual@xxx.com
vicentet, vicentet@xxx.com
marieta, marieta@xxx.com
...

És a dir, cal anomenar a les dues columnes com username i mail.

No especificarem cap camp ni cap configuració, nomès volem importar-los en Drupal:
sincronitzar usuaris active directory amb Drupal

I bé, finalment ja tenim tots els nous usuaris de l'Active Directory importats al nostre projecte Drupal:
sincronitzar usuaris active directory amb Drupal

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.

Utilitats

NAVEGACIÓ SENSE RATOLÍ

- Tab següent enllaç.
- Shift+Tab anterior enllaç.
- Enter activa l'enllaç.
- Alt+esquerra anar arrere.

CONTRAST DE COLORS

Accessibilitat - Color Negre
Accessibilitat - Color Groc
Accessibilitat - Color Verd

Accessibilitat - Color Blau
Accessibilitat - Color Crema
Accessibilitat - Color Blanc

 

PORTADES ALTERNATIVES