forked from S2i2S/IPA-CreazioneUtenti
108 lines
4.2 KiB
Bash
108 lines
4.2 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Formato del file di input CSV:
|
|
# login,Nome,Cognome,email,grp,referente
|
|
#
|
|
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
|
|
|
|
echo "======================================"
|
|
echo "SCRIPT crea utenti per freeipa "
|
|
echo "======================================"
|
|
|
|
|
|
SOURCE=$1
|
|
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'
|
|
GRP_SRV='area-services'
|
|
|
|
# Crea una directory temporanea nella home dell'utente, altrimenti esecuzioni da parte di utenti diversi sono destinate a fallire.
|
|
DIR_TEMP="${HOME}/naccount"
|
|
PASSWORDFILE=$( mktemp /var/tmp/utentiepassword.XXXXXX)
|
|
SCRIPT="${DIR_TEMP}/add-area-new-user.sh"
|
|
|
|
|
|
HAT=$'PER REFERENTE DI RETE ACCOUNT di SERVIZIO per AREA CREATO: '
|
|
UPPER_BODY=$'INOLTRARE LA SEGUENTE EMAIL CON CREDENZIALI AL PROPRIO UTENTE DI LABORATORIO\n\nGent.le utente\nIl tuo account AREA-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
|
|
|
|
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 2 ] ; 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."
|
|
|
|
MAIL='/bin/mail -r s2i2s@isti.cnr.it'
|
|
SUB_MAIL="'Nuovo utente di servizio per AREA inserito in sistema ISTI-CNR'"
|
|
|
|
if [ $COUNT -ge 1 ] ; then
|
|
### $last contains password
|
|
awk -F "," 'NF == 7 { print "echo",$7,"| 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,$5, "--users=",$1 }' var="${MAIL}" vars="${SUB_MAIL}" varc2="${CMD2}" vargis="${GRP_IS}" vargim="${GRP_IM}" vargsm="${GRP_SM}" varsrv="${GRP_SRV}" $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
|
|
|
|
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
|
|
|
|
### RUNNING SCRIPT
|
|
chmod +x $SCRIPT
|
|
echo "Run 'cd $DIR_TEMP ; bash $SCRIPT' to actually run the script"
|
|
else
|
|
echo "------FINISHED"
|
|
fi
|