forked from S2i2S/IPA-CreazioneUtenti
Added temporary creation of user through PIMPA
This commit is contained in:
parent
fb8022d9db
commit
e15219829b
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue