adellam-CreazioneUtenti/createUSER-AREA.sh

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