adellam-CreazioneUtenti/createNUSER-PIMPA.sh

126 lines
5.1 KiB
Bash

#!/bin/bash
#
# Formato del file di input CSV:
# login,Nome,Cognome,email,grp,referente,CF
#
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
CMD1='/usr/bin/ipa user-add'
CMD2='/usr/bin/ipa group-add-member'
GRP_IS='isti-users'
GRP_SM='smtp-user'
GRP_IM='imap-user'
GRP_GT='git-user'
# Crea una directory temporanea nella home dell'utente, altrimenti esecuzioni da parte di utenti diversi sono destinate a fallire.
DIR_TEMP="${HOME}/account"
echo ${DIR_TEMP}
PASSWORDFILE=$( mktemp /var/tmp/utentiepassword.XXXXXX)
SCRIPT="${DIR_TEMP}/add-new-user-idm.sh"
echo "======================================"
echo "SCRIPT crea utenti per freeipa "
echo "======================================"
HAT=$'PER REFERENTE DI RETE ACCOUNT ISTI CREATO: '
UPPER_BODY=$'INOLTRARE LA SEGUENTE EMAIL CON CREDENZIALI AL PROPRIO UTENTE DI LABORATORIO\n\nGent.le utente\nIl tuo account ISTI-CNR è stato creato.\nCon questo account potrai accedere ai vari servizi messi a disposizione dall\'istituto.\n\nIMPORTANTE: Accedi con le seguenti credenziali alla url https://nsidm.isti.cnr.it/ipa/ui/ e segui la procedura guidata per il cambio password.\n\n'
LOWER_BODY=$'\nATTENZIONE: non utilizzare i servizi senza aver completato la procedura di cambio password,\nin caso contrario l\'account potrebbe essere bloccato temporaneamente dagli amministratori per questioni inerenti la sicurezza.\nUna volta completata la procedura di cui sopra puoi procedere alla configurazione della posta (webmail e/o client)\ne di eventuali altri servizi seguendo le istruzioni che trovi alla pagina:\nhttps://mediawiki-s2i2s.isti.cnr.it/wiki\n\n\nPer eventuali segnalazioni https://redmine-s2i2s.isti.cnr.it/\nQuesta comunicazione è inviata in modalità automatica: ti preghiamo di non rispondere.\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
rm -f $SCRIPT_PIMPA
echo $UPPER_BODY
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'
H="${HAT}$LOGIN"$'\n'
BODY="$H$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="'Nuovo account ISTI inserito'"
### $last contains password
awk -F "," 'NF == 8 { print "echo",$8,"| ipa user-add",$1,"--first \"",$2,"\" --last \"",$3,"\" --email",$4,"--password ;",var,"-s",vars,$6,"<",$1,";",varc2,vargis, "--users=",$1,";",varc2,vargim, "--users=",$1,";",varc2,vargsm, "--users=",$1,";",varc2,vargit, "--users=",$1,";",varc2,$5, "--users=",$1 }' var="${MAIL}" vars="${SUB_MAIL}" varc2="${CMD2}" vargis="${GRP_IS}" vargim="${GRP_IM}" vargsm="${GRP_SM}" vargit="${GRP_GT}" $PASSWORDFILE >> $SCRIPT
SUB_MAIL="'inserimento mail isti'"
awk -F "," 'NF == 8 { print "echo \"CF:",$7,"email:",$4,"\"|", var,"-s",vars,"insmmbxnotify@isti.cnr.it,s2i2s@isti.cnr.it " }' var="${MAIL}" vars="${SUB_MAIL}" $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