diff --git a/bin/update-ldap-paheko.sh b/bin/update-ldap-paheko.sh index 1cb61b5..3ade959 100755 --- a/bin/update-ldap-paheko.sh +++ b/bin/update-ldap-paheko.sh @@ -15,13 +15,13 @@ setKazVars . $KAZ_KEY_DIR/env-ldapServ . $KAZ_KEY_DIR/env-paheko +VERSION="31-10-2026" PRG=$(basename $0) RACINE=$(echo $PRG | awk -F'.' '{print $1}') LOG=${KAZ_ROOT}/log/${RACINE}-$(date +%d-%m-%y-%H:%M:%S).log URL_PAHEKO="https://${API_USER}:${API_PASSWORD}@kaz-paheko.kaz.bzh" LDAP_IP=$(docker inspect -f '{{.NetworkSettings.Networks.ldapNet.IPAddress}}' ldapServ) regexMail="^(([A-Za-z0-9]+((\.|\-|\_|\+)?[A-Za-z0-9]?)*[A-Za-z0-9]+)|[A-Za-z0-9]+)@(([A-Za-z0-9]+)+((\.|\-|\_)?([A-Za-z0-9]+)+)*)+\.([A-Za-z]{2,})+$" - FICLDIF=/tmp/${RACINE}.ldif IfExistRec() @@ -110,17 +110,31 @@ LdapUpdateUniq() PBARGU="" I_REP=$(IfExistRec ${EMAIL}) [ "${I_REP}" = "vide" ] && { echo "Le mail ${EMAIL} n'existe pas dans l'annuaire Ldap" ; exit 1;} - [ "${MOBILE}" = IDEM ] && MOBILE=$(echo ${I_REP} | awk {'print $3'}) + if [ "${MOBILE}" = IDEM ] + then + if [ "$(echo ${I_REP} | awk {'print $3'})" = "mobile" ] + then + MOBILE="NR" + else + MOBILE=$(echo ${I_REP} | awk {'print $3'}) + fi + elif [ "$(echo ${MOBILE} | wc -L)" -ne "10" ] || [[ ! ${MOBILE} =~ ^[0-9]+$ ]] || [[ ! ${MOBILE} =~ ^(0)[67] ]] + then + PBARGU="${PBARGU} - Le numéro est malformé" + fi [ "${MAILSECOURS}" = IDEM ] && MAILSECOURS=$(echo ${I_REP} | awk {'print $2'}) [ "${QUOTA}" = IDEM ] && QUOTA=$(echo ${I_REP} | awk {'print $4'}) - [[ ${MOBILE} =~ ^[0-9]+$ ]] && [ "$(echo ${MOBILE} | wc -L)" -eq "10" ] && [[ ${MOBILE} =~ ^(0)[67] ]] || PBARGU="${PBARGU} - Le numéro est malformé" [[ ${EMAIL} =~ ${regexMail} ]] || PBARGU="${PBARGU} - Le mail est malformé" [[ ${MAILSECOURS} =~ ${regexMail} ]] || PBARGU="${PBARGU} - Le mail de secours est malformé" [[ ${QUOTA} =~ ^[0-9]+$ ]] || echo "le quota doit être en chiffres" + # on affiche les erreurs si la variable n'est pas vide [ ! -z "${PBARGU}" ] && { echo ${PBARGU};exit 1; } - - # a chaque fois qu'un élément est différent on le dit dans la variable PBARGU en commencant par un - - # ça va permettre de compter les tirets pour déterminer si quelque chose est a changer + # on initialise un chti compteur pour déterminer les fois ou c'est ok + # si à la fin le nombre est 3 c'est que rien n'est à changer + # si c'est inferieur à 3 alors c'est que au moins un truc est à modifier + # je le mets à jour et parce que je suis un bourrin, je remets les autres valeurs déjà connues + # qui sont forcement bonnes + # la seule exeption est le mobile qui si il n'est pas connu je mets mobile = NR COMPTEUR=0 # si le numéro est connu on le dit dans la variable [ "$(echo ${I_REP} | awk {'print $3'})" = "${MOBILE}" ] && { PBARGU="${PBARGU} -Le numéro est ok" ; COMPTEUR=$((COMPTEUR+1)) ; } @@ -128,10 +142,8 @@ LdapUpdateUniq() [ "$(echo ${I_REP} | awk {'print $2'})" = "${MAILSECOURS}" ] && { PBARGU="${PBARGU} -Le mail de secours est ok" ; COMPTEUR=$((COMPTEUR+1)) ; } # si le quota est le même on le met dans la variable [ "$(echo ${I_REP} | awk {'print $4'})" = "${QUOTA}" ] && { PBARGU="${PBARGU} -Le quota est déjà ok" ; COMPTEUR=$((COMPTEUR+1)) ; } - # si PBARGU n'est pas vide et si le nombre de tiret est égal à 3 c'est que tout est déjà bon et je sors - # mais si le nombre de tiret n'est pas 3 c'est que au moins un des élément est a changer et là je mets les autres valeurs (puisque celles qui existent sont ok ) - # donc la remettre n'est pas bien grave - [ ! -z "${PBARGU}" ] && [ "$COMPTEUR" -eq "3" ] && { echo "Tout es ok : rien à faire ";exit 1; } || echo "Info : ${PBARGU}" + #[ ! -z "${PBARGU}" ] && [ "$COMPTEUR" -eq "3" ] && { echo "Tout est ok : rien à faire ";exit 0; } || echo "Info : ${PBARGU}" + [ ! -z "${PBARGU}" ] && [ "$COMPTEUR" -eq "3" ] && exit 0 >${FICLDIF} echo -e "dn: cn=${EMAIL},ou=users,${ldap_root}" >>${FICLDIF} echo -e "changeType: modify">>${FICLDIF} @@ -151,6 +163,7 @@ LdapUpdateUniq() usage() { echo " Usage $0 [ -a ] [ -u mail -s mailsecours -m mobile -q quota ]" + echo " Version : ${VERSION}" echo " ---" echo " Ce script intérroge paheko et met à jour des champs tous les comptes ldap" echo " Ou peut juste mettre un enregistrement à jour "