Added temporary creation of user through PIMPA

This commit is contained in:
Franca Debole 2020-06-25 16:04:06 +02:00
parent fb8022d9db
commit e15219829b
2 changed files with 123 additions and 1 deletions

122
createUSER-PIMPA.sh Normal file
View File

@ -0,0 +1,122 @@
#!/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'
# 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 con le seguenti variabili:\n GRUPPO=$GRP\n DIRECTORY ACCOUNT AND SCRIPT=$DIR_TEMP\n LISTA UTENTI=$1"
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.\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 sarà possibile utilizzare i nuovi servizi senza aver completato la procedura e aver quindi\neffettivamente attivato l\047 utenza, ti invitiamo pertanto a non rimandare questa operazione.\n\nI servizi comprenderanno la posta elettronica ed Eduroam.\nUn servizio disponibile da utilizzare per eventuali segnalazioni https://redmine-s2i2s.isti.cnr.it/\n\n\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
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,$5, "--users=",$1 }' var="${MAIL}" vars="${SUB_MAIL}" varc2="${CMD2}" vargis="${GRP_IS}" vargim="${GRP_IM}" vargsm="${GRP_SM}" $PASSWORDFILE > $SCRIPT
SUB_MAIL="'inserimento mail isti'"
awk -F "," 'NF == 8 { print "echo \"CF:",$7,"email:",$4,"\"|", var,"-s",vars,"insmmbxnotify@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

View File

@ -45,7 +45,7 @@ while IFS= read -r line; do
else
COMMA=$(echo "$line" | awk -F "," '{print NF-1}')
if [ $COMMA -gt 3 ] ; then
if [ $COMMA -ge 3 ] ; then
COUNT=$((COUNT+1))
LENGTH=
if [ $# -lt 2 ] ; then