version du script avec option -c pour une création de mail en non intereactif

This commit is contained in:
2026-10-04 21:24:19 +02:00
parent 0f32ba4d0c
commit a0b44af705
+73 -37
View File
@@ -3,7 +3,8 @@
# Ki : Did
# koi : gestion globale des users Kaz mais aussi les users d'autres domaines hébergés
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
#KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
KAZ_ROOT=/kaz
. $KAZ_ROOT/bin/.commonFunctions.sh
setKazVars
@@ -31,7 +32,7 @@ LISTMASTER=$(echo ${LISTMASTERS} | cut -d',' -f1)
#### Test du serveur sur lequel s' execute le script ####
echo ${site} | grep -E 'prod1|dev' || { echo "Le script ne fonctionne que sur Prod1 et Dev ";exit;}
echo ${site} | grep -E 'prod1|dev' >/dev/null 2>&1 || { echo "Le script ne fonctionne que sur Prod1 et Dev ";exit;}
##############################
TFILE_EMAILS=$(mktemp /tmp/$RACINE.XXXXXXXXX.TFILE_EMAILS)
@@ -62,8 +63,8 @@ PostMattermost() {
. $KAZ_KEY_DIR/env-mattermostAdmin
PostM=$1
CHANNEL=$2
TEAMID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" "${URL_AGORA_API}/teams/name/${EQUIPE}" | jq -r .id )
CHANNELID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" ${URL_AGORA_API}/teams/${TEAMID}/channels/name/${CHANNEL} | jq -r .id )
TEAMID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" "${URL_AGORA_API}/teams/name/${EQUIPE}" | jq -r .id )
CHANNELID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" ${URL_AGORA_API}/teams/${TEAMID}/channels/name/${CHANNEL} | jq -r .id )
curl -s i-X POST -i -H "Authorization: Bearer ${mattermost_token}" -d "{\"channel_id\":\"${CHANNELID}\",\"message\":\"${PostM}\"}" "${URL_AGORA_API}/posts" >/dev/null 2>&1
}
@@ -521,7 +522,8 @@ createMail() {
CREATE_AUTO=${1}
EMAIL_SOUHAITE=${2}
EMAIL_SECOURS=${3}
# Si on est en interactif, On demande le mail souhaite on regarde si c' est valide et si ça existe déjà
# Si on est en interactif, On demande le mail souhaite le mail secours et on demande le nom et prenom
# et on regarde si c' est valide et si ça existe déjà
if [ "${CREATE_AUTO}" != "TRUE" ]
then
while [ $fait -eq 0 ]
@@ -535,39 +537,33 @@ createMail() {
EMAIL_SOUHAITE=$(unaccent utf8 ${EMAIL_SOUHAITE})
if [[ ${EMAIL_SOUHAITE} =~ ${regexMail} ]]
then
ldapsearch -H ldap://${LDAP_IP} \
-x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \
-w "${LDAP_ADMIN_PASSWORD}" \
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=${EMAIL_SOUHAITE}))" cn | grep ^cn | sed -e 's/^cn: //' >$TFILE_EMAILS
if grep -q "^${EMAIL_SOUHAITE}$" "${TFILE_EMAILS}"
then
printKazError " - Le mail ${EMAIL_SOUHAITE} existe déjà"
fait=0
elif ! grep $(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//') ${KAZ_CONF_DIR}/autorized-domains.txt >/dev/null
then
printKazMsg "Le domaine n' est pas dans la liste autorisée"
sleep 2
fait=0
else
fait=1
fi
ldapsearch -H ldap://${LDAP_IP} \
-x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \
-w "${LDAP_ADMIN_PASSWORD}" \
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=${EMAIL_SOUHAITE}))" cn | grep ^cn | sed -e 's/^cn: //' >$TFILE_EMAILS
if grep -q "^${EMAIL_SOUHAITE}$" "${TFILE_EMAILS}"
then
printKazError " - Le mail ${EMAIL_SOUHAITE} existe déjà"
fait=0
elif ! grep $(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//') ${KAZ_CONF_DIR}/autorized-domains.txt >/dev/null
then
printKazMsg "Le domaine n' est pas dans la liste autorisée"
sleep 2
fait=0
else
fait=1
fi
else
printKazError " - Mail invalide !"
sleep 2
fait=0
fi
done
else
echo "on aura fait les tests avant ou la c'est comme on veut"
fi
# on renseigne le domaine en cours pour les options qui concernent pas le domaine kaz.bzh
# ----------------------------------------------------------------------
DOMAINE_EN_COURS=$(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//')
echo " ---- Domaine: " ${DOMAINE_EN_COURS} ----
# ----------------------------------------------------------------------
# Si on est en interactif, On demande le mail de secours, le nom et prenom et on teste si c' est un mail valide
if [ "${CREATE_AUTO}" != "TRUE" ]
then
# on renseigne le domaine en cours pour les options qui concernent pas le domaine kaz.bzh
# ----------------------------------------------------------------------
DOMAINE_EN_COURS=$(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//')
echo " ---- Domaine: " ${DOMAINE_EN_COURS} ----
# ----------------------------------------------------------------------
fait=0
while [ $fait -eq 0 ]
do
@@ -596,7 +592,32 @@ createMail() {
read -p "Nom : " NOM
done
else
echo "on invente un nom et prénom et on aura testé avant si le mail de secours est valide"
echo "on invente un nom et prénom"
ERRMAILAUTO=""
# on renseigne DOMAINE EN COURS pour cette partie de script ( puisque l'autre déclaration se fait dasn la boucle interactive
DOMAINE_EN_COURS=$(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//')
NOM=kaz
PRENOM=$(echo ${EMAIL_SOUHAITE} | sed -e 's/@.*$//')
# on cherche le mail dans l'annuaire
ldapsearch -H ldap://${LDAP_IP} \
-x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \
-w "${LDAP_ADMIN_PASSWORD}" \
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=${EMAIL_SOUHAITE}))" cn | grep ^cn | sed -e 's/^cn: //' >$TFILE_EMAILS
if grep -q "^${EMAIL_SOUHAITE}$" "${TFILE_EMAILS}"
then
ERRMAILAUTO="${ERRMAILAUTO} Le mail ${EMAIL_SOUHAITE} existe déjà"
fi
if ! grep $(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//') ${KAZ_CONF_DIR}/autorized-domains.txt >/dev/null
then
ERRMAILAUTO="${ERRMAILAUTO} Le domaine ${DOMAINE_EN_COURS} n' est pas dans la liste autorisée"
fi
if [ ! -z "${ERRMAILAUTO}" ]
then
PostMattermost "Erreur de script auto : ${ERRMAILAUTO}" "Creation-Comptes"
echo "Erreur de script auto : ${ERRMAILAUTO}"
exit
fi
fi
# On constitue l' ident kaz pour le ldap
IDENT_KAZ=$(unaccent utf8 "${PRENOM,,}.${NOM,,}")
@@ -649,6 +670,7 @@ agoraEnabled: ${TRUE_KAZ}\n\
userPassword: {CRYPT}${LDAPPASS}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=${LDAP_ADMIN_USERNAME},${ldap_root}\" -x -w ${LDAP_ADMIN_PASSWORD}" >${TFILE_CREATE_MAIL}
# on execute le fichier avec les données ldap pour créer l' entrée dans l' annuaire
bash ${TFILE_CREATE_MAIL} >/dev/null
#DID
# on colle le compte et le mot de passe dans le fichier
echo "Création de : ${EMAIL_SOUHAITE} avec le mot de passe : ${PASSWORD}" >>${TFILE_CREATE_MAIL}
OLDIFS=${IFS}
@@ -675,7 +697,20 @@ fi
createMailAuto()
{
echo
echo $@
if [ "$#" -ne "3" ]
then
echo "$0 pas assez d'arguments"
PostMattermost "Erreur de script $0 ,constacter les sysadmins " "Creation-Comptes"
exit 1
fi
if [[ ${2} =~ ${regexMail} ]] && [[ ${3} =~ ${regexMail} ]]
then
createMail TRUE ${2} ${3}
else
echo "Les mails sont invalides"
PostMattermost "Erreur de script $0 ,les mails demandés sont malformés" "Creation-Comptes"
fi
}
createAlias() {
@@ -1181,6 +1216,9 @@ updateUser() {
usage () {
printKazMsg "$PRG [-h] [-v]"
printKazMsg "script de gestion des kaznautes"
printKazMsg " -c permet de créer un mail avec son mail de secours en non intereactif"
printKazMsg " syntax : $0 -c mail mailsecours"
printKazMsg " exemple $0 user@kaz.bzh user@apple.fr"
printKazMsg " -h aide sur ce script"
printKazMsg " -v version du script."
}
@@ -1223,9 +1261,7 @@ case "$CHOICE" in
'2' )
updateUser
;;
'3' )
# echo "La fonction est supprimée"
# read -p "==> Entrée pour continuer <=="
'3' )
gestPassword
;;
'4' )