• Information Tecnology
  • Software didattici
  • Materiali didattici
  • Reti informatiche
  • Soluzioni dei problemi
Reti informatiche per la scuola - Prof.Roberto Bisceglia
 
   
 

Inserimento massivo di utenti in Active Directory con CSVDE

Con l'inizio dell'anno scolastico gli Amministratori di rete scolastica si trovano a dover inserire i nuovi utenti nella rete locale dell'Istituto. Tali utenti possono essere nuovi docenti o gli alunni delle classi prime. Ugualmente si dovrà procedere all'eliminazione degli utenti uscenti e alle modifiche di appartenenza.

Tale attività può comportare un impegno non indifferente, per cui è consigliabile cancellare tutti gli utenti e ricreare ex-novo le Unità organizzative, i gruppi ed i loro appartenenti.

Questa attività se fatta a mano, utilizzando il tool di Windows 2008 (o 2003) server "Utenti e Computer di Active Directory" può portare via molto tempo, per cui è necessario automatizzare le cose, utilizzando un tool che Microsoft mette a disposizione: CSVDE.

CSVDE (Comma Separated Value Data Exchange) si trova in Windows 2008 o 2003 Server ed è un programma da linea di comando. La sua funzione è quella di leggere da un file CSV gli attributi LDAP relativi agli utenti che si vogliono inserire.

Gli attributi LDAP sono, ad esempio, il nome, il cognome, il nome completo, l'account, il percorso del profilo, l'Unità organizzativa ed il dominio di appartenenza..

Quindi, disponendo di un file con i principali attributi dei nostri utenti, in pochi secondi si potrebebro inserire nel dominio centinaia, migliaia di utenti. Tutto semplice ? Non esageriamo; la cosa è un po' complicata, ma seguendo passo a passo quanto sotto, qualsiasi amministratore dei rete locale sarà in grado di farlo.

Procediamo

Per prima cosa definiamo quali attributi LDAP siano da utilizzare. La mia scelta è stata su:

  • Object: nel nostro caso il valore è "User", in quanto parliamo di utenti
  • GivenName:  è il nome dell'utente
  • SN: il cognome dell'utente
  • DN: il "Nome distinto", ovvero il nome completo delle Unità organizzative e delDominio di appartenenza.
  • DisplayName: il nome come verrà visualizzato, di norma nelal forma "Nome Cognome".
  • SAMAccountName: il nome di accesso pre-Windows 2000, nel nostro caso "nome.cognome".
  • UserPrincipalName: il nome di accesso post-WIndows 2000, nel nostro caso "nome.cognome@dominio.local"
  • ProfilePath: il percorso completo dove si trova il profilo dell'utente, importante nel caso di utilizzo di profili comuni bloccati.
  • UserAccountControl: inserendo il valore "512" l'account verrà attivato. Con "514" disattivato.

CSVDE vuole che il file CSV sia impostato nel seguente formato:

ObjectClass,GivenName,SN,DN,DisplayName,SAMAccountName,UserPrincipalName,ProfilePath

con gli attributi separati da una virgola.

Quindi la prima e più corposa operazione è quelal di creare il file CSV adeguato. Ci viene in aiuto Microsoft Excel, oppure il foglio elettronico di OpenOffice.

Dando per scontato che l'Amministrazione di rete possa disporre di una tabella di Excel contenente l'elenco degli alunni con i soli tre campi: classe, nome e cognome. La classe dovrà essere inserita nella colonna A, il nome nella colonna C e il cognome nella colonna D, avendo accortezza di lasciare la prima riga vuota per l'inserimento delle etichette.

Nella riga 1, appunto, si scriveranno le seguenti etichette:

  • Classe
  • Object
  • GivenName
  • SN
  • DN
  • DisplayName
  • SAMAccountName
  • UserPrinipalName
  • ProfilePath
  • UserAccountControl

La colonna B, con etichetta Object deve essere riempita del valore "User", con le consuete procedure di riempimento di Excel, per tutti gli utenti esistenti.

A questo punto si devono costruire gli altri campi. Dando per scontato che nessuno vuol farlo a mano, ci si può aiutare con la funzione CONCATENA di Excel, con la quale creare il DN, il SAMAccountName, lo UserPrincipalName.

Il ProfilePath potrà essere composto per il primo record e copiato per tutti quelli che devono utilizzare il profilo comune.

Il DN ha una forma composta dal CN, ovvero nome e cognome, dalle Unità organizzative di appartenenza (nel caso in esame l'UO "Rete locale" contiene l'UO "OUStudenti" che contiene a sua volta le UO di ciascuna classe,nell'esempio la 1AA, quindi il nome completo del dominio, nel caso: dominio.local:

"CN=Elena Neri,OU=1AA,OU=OUStudenti,OU=Rete locale,DC=dominio,DC=local"

In questo campo le variabili sono il nome e cognome e la classe, le parti immutabili le restanti. Per questo è possibile estrapolare il valore della classe dalla cella corrispondente (colonna), il nome dalla colonna C ed il cognome dalla colonna D, concatenandoli ai valori fissi. La formula potrebbe essere questa:

=CONCATENA("""";"CN=";C2;" ";D2;",";"OU=";A2;",OU=OUStudenti,OU=Rete locale,DC=dominio,DC=local";"""")

Le quattro virgolette iniziali e finali sono indispensabili, in quanto, il campo DN deve essere racchiuso da una coppia di esse, mentre la seconda coppia è necessaria, in quanto il campo deve essere considerato un unicum.

Il DisplayName può essere costruito concatenando nome, uno spazio e cognome, con la formula:

=CONCATENA("""";C2;" ";D2;"""")

Vale lo stesso discorso per le virgolette in quanto deve essere racchiuso tra le stesse.

Identica procedura per il SAMAccountName, ma qui non servono le virgolette, trattandosi di un nome unico,pur col punto. Il minuscolo è solo una scelta personale:

=MINUSC((CONCATENA(C2;".";D2)))

Lo UserPrincipalName sarà definito concatenando il SAMAccountNAme con il dominio e la @:

=CONCATENA(G2;"@dominio.local")

Il ProfilePath dovrà essere scritto, con doppia razione di slash, in quanto nella trasformazione in CSV una serie di slash sparisce per motivi ignoti.

\\\\nomeserver\\profili\\studente 

A questo punto si può procedere alla copia delle formule su tutte le righe dei record.

Quasi siamo alla fine. Ma bisogna operare un controllo: che non esistano due nomi utente uguali e che i SAMAccountName non superino i 20 caratteri. Se non si fa questo, in fase di elaborazione da parte di CSVDE verrà un messaggio di errore e la procedura si bloccherà.

 e, quindi, è possibile creare il file CSV. Questo deve essere, però, non sotto forma di tabella, ma di righe con i campi separati da virgole:

User,Elena,Neri,"CN=Elena Neri,OU=1AA,OU=OUStudenti,OU=Rete locale,DC=dominio,DC=local","Elena Neri",elena.neri, elena.neri@dominio.local,\\\\nomeserver\\profili\\studente,512

Il sistema più semplice è quello di raccogliere tutti i campi,divisi da virgole, in un'unica cella, sempre con la funzione CONCATENA, copiare tutti i record e, successivamente copiare tutta la colonna risultante su un nuovo foglio.

  =CONCATENA(B1;",";C1;",";D1;",";E1;",";F1;",";G1;",";H1;",";I1;",";J1)

Il foglio nuovo potrà essere quindi salvato nel formato CSV con separatore di elenco.

Finito ? Ancora no. Excel, per un motivo che ignoro e che, per ora, non intendo approfondire, aggiunge nel file CSV delle virgolette inutili. Per eliminarle, ho utilizzato l'editor PSPad, oppure Wordpad o il blocco note, e con la funzione di sostituzione ho facilmente eliminato l'inutile.

A questo punto il file CSV è  pronto, può essere trasferito nel server e fatto elaborare da CSVDE.

Per fare questo, è necessario lanciare il prompt dei comandi (in Windows 2008 Server con privilegi di amministratore), e dare il comando CSVDE -i -f nomefile.csv

ove nomefile.csv è il file creato in precedenza. Se tutto sarà stato fatto per bene, tutti gli utenti verranno creati.

Una volta fatta la procedura, sarà possibile, dalla console di gestioni utenti del server,  inserirli in gruppi locali, assegnare ad essi un homefolder, modificare la password di primo accesso, attualmente vuota.

Per quanto riguarda l' homefolder e la mappatura dello stesso, è possibile utilizzare gli attributi HomeDrive (es: Z:), e HomeDirectory (es: \\\\server\\studenti\\classe\%USERNAME%), ma se la directory dove si deve creare l' homefolder, non ha permessi di scrittura per Everyone,  la creazione non avrà luogo.

 


 
Aggiornamento: 20-Lug-2015 20:02
© - http://www.bisceglia.eu