forked from S2i2S/IPA-CreazioneUtenti
115 lines
5.9 KiB
Bash
115 lines
5.9 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Formato del file di input CSV:
|
|
# login,Nome,Cognome,email,alias1,alias2
|
|
#
|
|
if [ $# -lt 1 ] ; then
|
|
echo "È necessario passare il path del file con la lista di utenti come primo ed eventualmente unico argomento"
|
|
exit 1
|
|
fi
|
|
|
|
SOURCE=$1
|
|
#SOURCE=$( mktemp /var/tmp/lista-utenti-definitiva.XXXXXX)
|
|
CMD1='/usr/bin/ipa user-add'
|
|
CMD2='/usr/bin/ipa group-add-member'
|
|
GRP_IS='area-users'
|
|
GRP_SM='smtp-user'
|
|
GRP_IM='imap-user'
|
|
# Crea una directory temporanea nella home dell'utente, altrimenti esecuzioni da parte di utenti diversi sono destinate a fallire.
|
|
DIR_TEMP="${HOME}/accountAREA"
|
|
echo ${DIR_TEMP}
|
|
PASSWORDFILE=$( mktemp /var/tmp/utentiepassword.XXXXXX)
|
|
SCRIPT="${DIR_TEMP}/add-user-idm.sh"
|
|
echo "======================================"
|
|
echo "SCRIPT crea utenti per freeipa con le seguenti variabili:\n GRUPPO=$GRP\n DIRECTORY ACCOUNT AND SCRIPT=$DIR_TEMP\n LISTA UTENTI=$1"
|
|
echo "======================================"
|
|
UPPER_BODY=$'Gent.le utente\nQuesta comunicazione è inviata in modalità automatica: ti preghiamo di non rispondere.\nIl tuo account email è stato aggiunto al sistema di autenticazione del gruppo S2i2S.\nAccedi con il tuo account alla url: https://ipa.isti.cnr.it e segui la procedura guidata per il cambio password.\n\n'
|
|
LOWER_BODY=$'Questo account sarà usato per l\047accesso ai sistemi e servizi che necessitano di autenticazione.\n\nAttenzione: : per attivare l\047utenza e garantire la sicurezza dell\047account procedere quanto prima con l\047operazione di cambio password\ne verificare che le informazioni presenti nel proprio profilo su https://ipa.isti.cnr.it siano corrette.\nL\047autenticazione e il funzionamento del nuovo servizio di posta elettronica può essere quindi immediatamente verificato collegandosi alla webmail\nhttps://webmail.isti.cnr.it con questo nuovo account.\n\nLe informazioni per la migrazione della mailbox sono reperibili https://mediawiki-s2i2s.isti.cnr.it/wiki/Migrazione_Posta_AREA\nLe informazioni per la sincronizzazione della mailbox sono reperibili https://mediawiki-s2i2s.isti.cnr.it/wiki/Sincronizzazione_Posta_AREA\n\nPer qualsiasi comunicazione o richiesta di supporto il canale preferenziale è il sistema di ticketing, come indicato qui\nhttps://mediawiki-s2i2s.isti.cnr.it/wiki/Supporto_per_AREA\nNel caso di problemi con l\047account, che non permettono di autenticarsi, contattare il proprio referente tecnico per l\047Area.\n\nGrazie\nS2I2S Team\n'
|
|
|
|
###CLEANING STEP
|
|
rm -fr /var/tmp/utentiepassword.*
|
|
rm -fr $DIR_TEMP
|
|
mkdir -p $DIR_TEMP
|
|
rm -f $PASSWORDFILE
|
|
touch $PASSWORDFILE
|
|
rm -f $SCRIPT
|
|
COUNT=0
|
|
echo "------CREATING PASSWORD AND STORING ON ${PASSWORDFILE}."
|
|
while IFS= read -r line; do
|
|
if [ -z "$line" ]
|
|
then
|
|
echo ""
|
|
else
|
|
if [ "$(echo "$line" | cut -c 1)" = '#' ] ; then
|
|
echo "SKIP " $line
|
|
else
|
|
|
|
COMMA=$(echo "$line" | awk -F "," '{print NF-1}')
|
|
if [ $COMMA -ge 3 ] ; then
|
|
COUNT=$((COUNT+1))
|
|
LENGTH=
|
|
if [ $# -lt 2 ] ; then
|
|
LENGTH=15
|
|
else
|
|
LENGTH=$1
|
|
fi
|
|
psw=$(openssl rand -base64 ${LENGTH} |sha256sum |head -c${LENGTH})
|
|
echo $line | sed -e "s/$/,$psw/g" >> $PASSWORDFILE
|
|
LOGIN=$( echo $line | awk -F "," '{print $1}')
|
|
ACC="$DIR_TEMP/$LOGIN"
|
|
touch $ACC
|
|
U1="Il tuo username è: $LOGIN"
|
|
U2="La tua password provvisoria è: $psw"
|
|
STR="${U1}"$'\n '"${U2}"$'\n\n'
|
|
BODY="$UPPER_BODY ${STR}$LOWER_BODY"
|
|
echo "$BODY" >> $ACC
|
|
else
|
|
echo "$line miss information"
|
|
fi
|
|
fi
|
|
fi
|
|
done < "$SOURCE"
|
|
|
|
echo "------PASSWORD AND MAIL CREATION COMPLETED for $COUNT user."
|
|
|
|
if [ $COUNT -ge 1 ] ; then
|
|
MAIL='/bin/mail -r s2i2s@isti.cnr.it'
|
|
#SUB_MAIL="'[s2i2s] Benvenuto nei servizi S2I2S '"
|
|
SUB_MAIL="'Servizi di rete ISTI-CNR'"
|
|
|
|
echo "------STARTING ipa_user_add from file: $PASSWORDFILE"
|
|
|
|
### $7 contains password
|
|
awk -F "," 'NF == 7 { print "echo",$7,"| ipa user-add",$1,"--first \"",$2,"\" --last \"",$3,"\" --email",$4,"--email",$5,"--email",$6, "--password ;",var,"-s",vars,$4,"<",$1,";",varc2,vargis, "--users=",$1,";",varc2,vargim, "--users=",$1,";",varc2,vargsm, "--users=",$1 } NF == 6 { print "echo",$6,"| ipa user-add",$1,"--first \"",$2,"\" --last \"",$3,"\" --email",$4, "--email",$5,"--password ;",var,"-s",vars,$4,"<",$1,";",varc2,vargis, "--users=",$1,";",varc2,vargim, "--users=",$1,";",varc2,vargsm, "--users=",$1 } NF == 5 { print "echo",$5,"| ipa user-add",$1,"--first \"",$2,"\" --last \"",$3,"\" --email",$4, "--password ;",var,"-s",vars,$4,"<",$1,";",varc2,vargis, "--users=",$1,";",varc2,vargim, "--users=",$1,";",varc2,vargsm, "--users=",$1 }' var="${MAIL}" vars="${SUB_MAIL}" varc2="${CMD2}" vargis="${GRP_IS}" vargim="${GRP_IM}" vargsm="${GRP_SM}" $PASSWORDFILE > $SCRIPT
|
|
|
|
|
|
|
|
|
|
# Rimozione degli spazi all'interno delle " prima per first e poi per last
|
|
# Il replace e' customizzato per la riga di comando passata che ha prima
|
|
# --first e poi --last e poi --email
|
|
# Prova effettuata da' come risultato
|
|
# ipa user-add aaffe --first "Fabio Pluto" --last "Affe" --email
|
|
# ipa user-add baffe --first "Fabio" --last "Affe Pluto" --email
|
|
# ipa user-add caffe --first "Fabio Pluto" --last "Affe Pluto" --email
|
|
|
|
sed -i -e 's/users=\ /users=/g' $SCRIPT
|
|
sed -i -e 's/\-\-first\ \"\ \(.*\)\ \" \-\-last/\-\-first\ \"\1\" \-\-last/' $SCRIPT
|
|
sed -i -e 's/\-\-last\ \"\ \(.*\)\ \" \-\-email/\-\-last\ \"\1\" \-\-email/' $SCRIPT
|
|
|
|
# Questa rimuove tutti gli spazi all'interno dei ", quindi non va bene in caso di doppio nome o doppio cognome:
|
|
# sed 's/"[^"]*"/\n&/g;:a;s/\(\n"[^"]*\) /\1/g;ta;s/\n//g'
|
|
#sed -i -e 's/users=\ /users=/g' $SCRIPT
|
|
#sed -i -e 's/--first\s"[^"]*"/\n&/g;:a;s/\(\n--first\s"[^"]*\) /\1/g;ta;s/\n//g' $SCRIPT
|
|
#sed -i -e 's/--last\s"[^"]*"/\n&/g;:a;s/\(\n--last\s"[^"]*\) /\1/g;ta;s/\n//g' $SCRIPT
|
|
#sed -i -e 's/\-\-last\ \"\ \(.*\)\ \"/--last\ \"\1\"/' $SCRIPT
|
|
|
|
### RUNNING SCRIPT
|
|
chmod +x $SCRIPT
|
|
echo "Run 'cd $DIR_TEMP ; bash $SCRIPT' to actually run the script"
|
|
# echo "------ SCRIPT: $SCRIPT"
|
|
else
|
|
echo "------FINISHED"
|
|
fi
|
|
|