Hai un dominio google apps domain for education e la necessità di creare gli account per tutti gli studenti? Ecco un tutorial con GAM (Google Apps Manager).

Google apps logo.jpg

Contents

Premessa

Innanzi tutto devi installare GAM ed eseguire la prima attivazione sul tuo dominio. GAM è uno strumento a linea di comando che permette agli amministratori di controllare il proprio dominio Google Apps, gestire gli account, i gruppi e le organizzazioni. In questo tutorial troverai gli script usati per accreditare tutti gli allievi di una scuola, circa 700 studenti. Si tratta di script bash, testati in ambiente Linux.

Scelte operative, organizzazione della struttura

In questo esempio immaginiamo che la nostra scuola sia composta da 3 Istituti: "Marconi", "Fermi" e "Volta", per un totale di 25 classi, e che il dominio della scuola sia mfv-school.com. Una buona scelta operativa potrebbe essere di organizzare gli account per istituto/classe e di creare anche un gruppo per ogni classe usando un nome univoco e facilmente riconoscibile, tipo "classe.istituto". Per gli account studente scegliamo "Cognome Nome" <nome.cognome@dominio.tld>, così si ordineranno per cognome.

Per partire abbiamo bisogno di un file che descriva le organizzazioni e i gruppi e di una serie di file con i momi degli studenti divisi per Istituto e classe. Le operazioni da svolgere saranno quindi in sequenza:

  1. Creare le organizzazioni nel pannello di admin
  2. Creare le mail di gruppo google groups
  3. Creare infine gli account studenti, inserendoli nella propria org e nei gruppi

Questi i file .csv che andremo ad usare:

file_group_org.csv (GROUP PARENT ORGANIZATION):

1am.marconi@mfv-school.com, Students/Marconi, 1AM
1bm.marconi@mfv-school.com, Students/Marconi, 1BM
2am.arconi@mfv-school.com, Students/Marconi, 2BM
...
1af.fermi@mfv-school.com, Students/Fermi, 1AF
2af.fermi@mfv-school.com, Students/Fermi, 2AF
...
1av.volta@mfv-school.com, Students/Volta,1AV
...

file_students.csv (SURNAME NAME EMAIL PASSWORD ORG PARENT):

"Smith", "John", "john.smith@mfv-school.com", "pw_john", "1AM", "Marconi"
"Brown", "David", "david.brown@mfv-school.com", "pw_david", "1AM", "Marconi"
...
"Johnson", "Kate", "kate.johnson@mfv-school.com", "pw_kate", "1AF", "Fermi"
...

Creazione delle organizzazioni e dei gruppi

make_orgs.sh

#!/bin/bash
 
CWD=`pwd`
 
if [ "a$1" == "a" ] ; then
 echo "Usage: $0 file_group_org"
 exit
fi
 
IFS=','
 
cat $1 |
while read GROUP PARENT ORG
do
 
 echo $PARENT $ORG
 
 python $CWD/gam.py create org $ORG description "" parent $PARENT noinherit
 
done

make_groups.sh

#!/bin/bash
 
CWD=`pwd`
 
LANGUAGE=it
GROUP_PREFIX="Classe"
GROUP_DESCRIPTION="Tutti gli allievi della"
 
if [ "a$1" == "a" ] ; then
 echo "Usage: $0 file_group_org"
 exit
fi
 
IFS=','
 
cat $1 |
while read GROUP PARENT ORG
do
 
 PARENT=`echo $PARENT | cut -d'/' -f2`
 
 echo $PARENT $ORG
 
 python $CWD/gam.py create group $GROUP name "$GROUP_PREFIX $ORG" description "$GROUP_DESCRIPTION $ORG - $PARENT"
 
 python $CWD/gam.py update group $GROUP primary_language "$LANGUAGE"
 
 python $CWD/gam.py update group $GROUP who_can_invite all_managers_can_invite
 
 python $CWD/gam.py update group $GROUP who_can_join invited_can_join
 
 python $CWD/gam.py update group $GROUP send_message_deny_notification true
 
 python $CWD/gam.py update group $GROUP allow_external_members false
 
 python $CWD/gam.py update group $GROUP settings who_can_post_message anyone_can_post
 
 python $CWD/gam.py update group $GROUP settings who_can_view_group all_in_domain_can_view
 
 python $CWD/gam.py update group $GROUP who_can_view_membership all_in_domain_can_view
 
 python $CWD/gam.py update group $GROUP include_in_global_address_list false
 
done

Nota: negli scipt si presume che l'organizzazione "Sudents" sia già esistente.

Creazione degli account

bulk_users.sh (SURNAME NAME EMAIL PASSWORD ORG PARENT):

#!/bin/bash
 
CWD=`pwd`
ROOT_ORG=Students
DOMAIN=mfv-school.com
 
if [ "a$1" == "a" ] ; then
 echo "Usage: $0 file_users_list"
 exit
fi
 
IFS=','
 
cat $1 |
while read SURNAME NAME EMAIL PASSWORD ORG PARENT
do
 
 SURNAME=$(echo $SURNAME|sed 's/"//g')
 NAME=$(echo $NAME|sed 's/"//g')
 EMAIL=$(echo $EMAIL|sed 's/"//g')
 PASSWORD=$(echo $PASSWORD|sed 's/"//g')
 
 ORG=$(echo $ORG|sed 's/"//g')
 PARENT=$(echo $PARENT|sed 's/"//g')
 
 
 if [ "a$EMAIL" != "a" ] ; then
  echo $EMAIL $ORG
 
  python $CWD/gam.py create user $EMAIL firstname "$SURNAME" lastname "$NAME" \
			password $PASSWORD suspended off changepassword on \
			nohash org "$ROOT_ORG/$PARENT/$ORG"
 
  mailORG=`echo $ORG | tr '[:upper:]' '[:lower:]'`
  mailPARENT=`echo $PARENT | tr '[:upper:]' '[:lower:]'`
 
  python $CWD/gam.py update group $mailORG.$mailPARENT@$DOMAIN add member $EMAIL
 
 fi
 
done

Nota: lo script crea gli account e li inserisce nei rispettivi gruppi e nelle organizioni

Correzione degli errori, modifica degli account

Se avete creato per errore degli account sbagliati, è possibile rimediare creando un file .csv con l'elenco degli account da correggere e avviare lo script di cui sotto: file_users_to_corrige.csv

"Smith", "John", "john.smith@nfv-school.org", "Smith", "James", "james.smith@nfv-school.org"
...

users-corrige.sh (SURNAME NAME EMAIL newSURNAME newNAME newEMAIL):

#!/bin/bash
 
CWD=`pwd`
 
if [ "a$1" == "a" ] ; then
 echo "Usage: $0 file_users_to_corrige"
 exit
fi
 
IFS=','
 
cat $1 |
while read SURNAME NAME EMAIL newSURNAME newNAME newEMAIL
do
 
 EMAIL=$(echo $EMAIL|sed 's/"//g')
 newSURNAME=$(echo $newSURNAME|sed 's/"//g')
 newNAME=$(echo $newNAME|sed 's/"//g')
 newEMAIL=$(echo $newEMAIL|sed 's/"//g')
 
 echo $EMAIL' --> '$newEMAIL
 
 python $CWD/gam.py update user $EMAIL username $newEMAIL firstname "$newSURNAME" lastname "$newNAME"
 
done

Esecuzione degli script, conclusioni, garanzie

Bene, dovreste avere a disposizione tutti i file, date i permessi di esecuzione ai file .sh e avviateli nella corretta sequenza, in poche ore avrete registrato tutta la scuola. Buon divertimento!

cd ~/GAM
./make_orgs.sh file_group_org.csv
./make_groups.sh file_group_org.csv
./bulk_users.sh file_users_list.csv

Nota: le notizie e i software in questo tutorial sono rilasciati "as is", "così come sono", e senza garanzia alcuna. Usare a proprio rischio e pericolo.

Retrieved from "http://www.zoros.org/wiki/index.php?title=How_to_create_the_google_accounts_for_all_students_in_domain_of_school_with_GAM_-_Google_Apps_Manager/it"