forked from S2i2S/IPA-CreazioneUtenti
126 lines
5.1 KiB
Bash
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
|