pret pour être lancé par le wraper en python
This commit is contained in:
+88
-54
@@ -3,34 +3,38 @@
|
|||||||
#KI: didi
|
#KI: didi
|
||||||
#KOI: lire les emails secours et tel sur chaque fiche paheko et les rajouter/modifier le ldap
|
#KOI: lire les emails secours et tel sur chaque fiche paheko et les rajouter/modifier le ldap
|
||||||
#KAN: 21/08/2026
|
#KAN: 21/08/2026
|
||||||
|
#KAN: le 25/10/2026
|
||||||
|
# grosse modif, il faut passer des argumens pour modifier les quotas, le mail secours ou le nuro de tel
|
||||||
|
|
||||||
#on récupère toutes les variables et mdp
|
#on récupère toutes les variables et mdp
|
||||||
KAZ_ROOT=/kaz
|
#KAZ_ROOT=/kaz
|
||||||
#KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||||
setKazVars
|
setKazVars
|
||||||
. $DOCKERS_ENV
|
. $DOCKERS_ENV
|
||||||
. $KAZ_KEY_DIR/env-ldapServ
|
. $KAZ_KEY_DIR/env-ldapServ
|
||||||
. $KAZ_KEY_DIR/env-paheko
|
. $KAZ_KEY_DIR/env-paheko
|
||||||
OPTIONS=""
|
|
||||||
|
|
||||||
|
PRG=$(basename $0)
|
||||||
|
RACINE=$(echo $PRG | awk '{print $1}')
|
||||||
URL_PAHEKO="https://${API_USER}:${API_PASSWORD}@kaz-paheko.kaz.bzh"
|
URL_PAHEKO="https://${API_USER}:${API_PASSWORD}@kaz-paheko.kaz.bzh"
|
||||||
LDAP_IP=$(docker inspect -f '{{.NetworkSettings.Networks.ldapNet.IPAddress}}' ldapServ)
|
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,})+$"
|
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/ficupdaemobile.ldif
|
|
||||||
|
|
||||||
|
FICLDIF=/tmp/${RACINE}.ldif
|
||||||
|
|
||||||
IfExistRec()
|
IfExistRec()
|
||||||
{
|
{
|
||||||
T_EMAIL=$1
|
T_EMAIL=$1
|
||||||
T_MOBILE=$2
|
#T_MOBILE=$2
|
||||||
T_MAILSECOURS=$3
|
#T_MAILSECOURS=$3
|
||||||
|
#T_QUOTA=$4
|
||||||
SEARCH_OBJECT_CLASS="inetOrgPerson"
|
SEARCH_OBJECT_CLASS="inetOrgPerson"
|
||||||
TAB_REP=""
|
TAB_REP=""
|
||||||
T_REP=""
|
T_REP=""
|
||||||
T_VAL=""
|
T_VAL=""
|
||||||
COUNT=0
|
COUNT=0
|
||||||
for T_VAL in mail mailDeSecours mobile
|
for T_VAL in mail mailDeSecours mobile quota
|
||||||
do
|
do
|
||||||
T_REP="${T_REP} $(ldapsearch -H ldap://${LDAP_IP} \
|
T_REP="${T_REP} $(ldapsearch -H ldap://${LDAP_IP} \
|
||||||
-x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \
|
-x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||||
@@ -39,7 +43,9 @@ IfExistRec()
|
|||||||
| grep -e ^${T_VAL}: \
|
| grep -e ^${T_VAL}: \
|
||||||
| sed -e 's/'"${T_VAL}"': //g' \
|
| sed -e 's/'"${T_VAL}"': //g' \
|
||||||
| tr -d [:space:] )"
|
| tr -d [:space:] )"
|
||||||
if [ $(echo -n "${T_REP}" | wc -c) -le "3" ]
|
# si la longueur moins de 1 alors on a une valeur et on la mets dans le tableau
|
||||||
|
# sinon on met le nom du champ ( ce qui veut dire que la valeur est vide et qu'il faudra la modifier
|
||||||
|
if [ $(echo -n "${T_REP}" | wc -c) -le "1" ]
|
||||||
then
|
then
|
||||||
[ "${COUNT}" -eq "0" ] && TAB_REP="${TAB_REP}${T_VAL}" || TAB_REP="${TAB_REP} ${T_VAL}"
|
[ "${COUNT}" -eq "0" ] && TAB_REP="${TAB_REP}${T_VAL}" || TAB_REP="${TAB_REP} ${T_VAL}"
|
||||||
else
|
else
|
||||||
@@ -49,7 +55,8 @@ IfExistRec()
|
|||||||
COUNT=$(expr ${COUNT} + 1 )
|
COUNT=$(expr ${COUNT} + 1 )
|
||||||
done
|
done
|
||||||
# on retourne les valeurs trouvées
|
# on retourne les valeurs trouvées
|
||||||
[ "${TAB_REP}" = "mail mailDeSecours mobile" ] && { echo "vide" ; exit 1 ; }
|
# si tout le tableau ne contient que les noms de champs alors c'est que tout est
|
||||||
|
[ "${TAB_REP}" = "mail mailDeSecours mobile quota" ] && { echo "vide" ; exit 1 ; }
|
||||||
[ -z "${TAB_REP}" ] && { echo "vide" ; exit 1 ; } || echo ${TAB_REP}
|
[ -z "${TAB_REP}" ] && { echo "vide" ; exit 1 ; } || echo ${TAB_REP}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,23 +66,27 @@ LdapUpdateAll()
|
|||||||
COUNT=0
|
COUNT=0
|
||||||
# bon la requête je ne l'ai pas inventée vu mon niveau de sql
|
# bon la requête je ne l'ai pas inventée vu mon niveau de sql
|
||||||
# j'ai fait une recherche avancée dans paheko et ça propose de montrer la requête
|
# j'ai fait une recherche avancée dans paheko et ça propose de montrer la requête
|
||||||
for line in $(curl -s ${URL_PAHEKO}/api/sql -d "SELECT u."email" , u."telephone" , u."email_secours" FROM users_view AS u INNER JOIN users_search AS us USING (id) \
|
for line in $(curl -s ${URL_PAHEKO}/api/sql -d "SELECT u."email" , u."telephone" , u."email_secours", u."quota_disque" FROM users_view AS u INNER JOIN users_search AS us USING (id) \
|
||||||
WHERE (id_category in ('12','3') and u.telephone like '06%' or telephone like '07%' ) LIMIT 3000" \
|
WHERE (id_category in ('12','3') and u.telephone like '06%' or telephone like '07%' ) LIMIT 3000" \
|
||||||
| sed 's/\([0-9]\)[ \.]\([-0-9]\)/\1\2/g' \
|
| sed 's/\([0-9]\)[ \.]\([-0-9]\)/\1\2/g' \
|
||||||
| jq -r '.results[] | [.email,.telephone,.email_secours]| @csv')
|
| jq -r '.results[] | [.email,.telephone,.email_secours,.quota_disque]| @csv')
|
||||||
do
|
do
|
||||||
TAB_MODIF=""
|
TAB_MODIF=""
|
||||||
MAILSECOURS=$(echo ${line} | awk -F',' {'print $3'} | sed -e 's/"//g')
|
MAILSECOURS=$(echo ${line} | awk -F',' {'print $3'} | sed -e 's/"//g')
|
||||||
EMAIL=$(echo ${line} | awk -F',' {'print $1'} | sed -e 's/"//g')
|
EMAIL=$(echo ${line} | awk -F',' {'print $1'} | sed -e 's/"//g')
|
||||||
MOBILE=$(echo ${line} | awk -F',' {'print $2'} | sed -e 's/"//g')
|
MOBILE=$(echo ${line} | awk -F',' {'print $2'} | sed -e 's/"//g')
|
||||||
A_REP=$(IfExistRec ${EMAIL} ${MOBILE} ${MAILSECOURS})
|
QUOTA=$(echo ${line} | awk -F',' {'print $4'} | sed -e 's/"//g')
|
||||||
A_MOBILE=$(echo ${A_REP} | awk {'print $3'})
|
#A_REP=$(IfExistRec ${EMAIL} ${MOBILE} ${MAILSECOURS} ${QUOTA})
|
||||||
A_MAILSECOURS=$(echo ${A_REP} | awk {'print $2'})
|
A_REP=$(IfExistRec ${EMAIL})
|
||||||
A_MAIL=$(echo ${A_REP} | awk {'print $1'})
|
A_MAIL=$(echo ${A_REP} | awk {'print $1'})
|
||||||
|
A_MAILSECOURS=$(echo ${A_REP} | awk {'print $2'})
|
||||||
|
A_MOBILE=$(echo ${A_REP} | awk {'print $3'})
|
||||||
|
A_QUOTA=$(echo ${A_REP} | awk {'print $4'})
|
||||||
# cas ou ça ne remonte rien donc on passe au suivant
|
# cas ou ça ne remonte rien donc on passe au suivant
|
||||||
[ "${A_REP}" = "vide" ] && { continue; }
|
[ "${A_REP}" = "vide" ] && { continue; }
|
||||||
[ "${A_MOBILE}" != "${MOBILE}" ] && { TAB_MODIF="${TAB_MODIF}$(echo -e "replace: mobile\nmobile: ${MOBILE}\n")" ; TAB_MODIF="${TAB_MODIF}\n$(echo "-\n")"; }
|
[ "${A_MOBILE}" != "${MOBILE}" ] && { TAB_MODIF="${TAB_MODIF}$(echo -e "replace: mobile\nmobile: ${MOBILE}\n")" ; TAB_MODIF="${TAB_MODIF}\n$(echo "-\n")"; }
|
||||||
[ "${A_MAILSECOURS}" != "${MAILSECOURS}" ] && TAB_MODIF="${TAB_MODIF}$(echo -e "replace: mailDeSecours\nmailDeSecours: ${MAILSECOURS}\n-\n")"
|
[ "${A_MAILSECOURS}" != "${MAILSECOURS}" ] && TAB_MODIF="${TAB_MODIF}$(echo -e "replace: mailDeSecours\nmailDeSecours: ${MAILSECOURS}\n-\n")"
|
||||||
|
[ "${A_QUOTA}" != "${QUOTA}" ] && TAB_MODIF="${TAB_MODIF}$(echo -e "replace: quota\nquota: ${QUOTA}\n-\n")"
|
||||||
if [ ! -z "${TAB_MODIF}" ]
|
if [ ! -z "${TAB_MODIF}" ]
|
||||||
then
|
then
|
||||||
echo -e "\ndn: cn=${EMAIL},ou=users,${ldap_root}" >>${FICLDIF}
|
echo -e "\ndn: cn=${EMAIL},ou=users,${ldap_root}" >>${FICLDIF}
|
||||||
@@ -93,22 +104,33 @@ LdapUpdateUniq()
|
|||||||
EMAIL=$1
|
EMAIL=$1
|
||||||
MOBILE=$2
|
MOBILE=$2
|
||||||
MAILSECOURS=$3
|
MAILSECOURS=$3
|
||||||
|
QUOTA=$4
|
||||||
|
|
||||||
PBARGU=""
|
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'})
|
||||||
|
[ "${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é"
|
[[ ${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é"
|
[[ ${EMAIL} =~ ${regexMail} ]] || PBARGU="${PBARGU} - Le mail est malformé"
|
||||||
[[ ${MAILSECOURS} =~ ${regexMail} ]] || PBARGU="${PBARGU} - Le mail de secours est malformé"
|
[[ ${MAILSECOURS} =~ ${regexMail} ]] || PBARGU="${PBARGU} - Le mail de secours est malformé"
|
||||||
|
[[ ${QUOTA} =~ ^[0-9]+$ ]] || echo "le quota doit être en chiffres"
|
||||||
[ ! -z "${PBARGU}" ] && { echo ${PBARGU};exit 1; }
|
[ ! -z "${PBARGU}" ] && { echo ${PBARGU};exit 1; }
|
||||||
PBARGU=""
|
|
||||||
I_REP=$(IfExistRec ${EMAIL} ${MOBILE} ${MAILSECOURS})
|
# a chaque fois qu'un élément est différent on le dit dans la variable PBARGU en commencant par un -
|
||||||
[ "${I_REP}" = "vide" ] && { echo "Pas de mail ${EMAIL}" ; exit 1;}
|
# ça va permettre de compter les tirets pour déterminer si quelque chose est a changer
|
||||||
|
COMPTEUR=0
|
||||||
# si le numéro est connu on le dit dans la variable
|
# 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 déjà celui là"
|
[ "$(echo ${I_REP} | awk {'print $3'})" = "${MOBILE}" ] && { PBARGU="${PBARGU} -Le numéro est ok" ; COMPTEUR=$((COMPTEUR+1)) ; }
|
||||||
# si le mail Secours est connu on le dit dans la variable
|
# si le mail Secours est connu on le dit dans la variable
|
||||||
[ "$(echo ${I_REP} | awk {'print $2'})" = "${MAILSECOURS}" ] && PBARGU="${PBARGU} -Le mail de secours est déjà celui là"
|
[ "$(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
|
# 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 2 valeurs (puisque celle qui existe est quand même bonne )
|
# 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
|
# donc la remettre n'est pas bien grave
|
||||||
[ ! -z "${PBARGU}" ] && [ $(echo ${PBARGU} | sed -e 's/[A-Za-z0-9 ]//g' | wc -c) -eq 3 ] && { echo ${PBARGU};exit 1; } || echo "Info : ${PBARGU}"
|
[ ! -z "${PBARGU}" ] && [ "$COMPTEUR" -eq "3" ] && { echo "Tout es ok : rien à faire ";exit 1; } || echo "Info : ${PBARGU}"
|
||||||
>${FICLDIF}
|
>${FICLDIF}
|
||||||
echo -e "dn: cn=${EMAIL},ou=users,${ldap_root}" >>${FICLDIF}
|
echo -e "dn: cn=${EMAIL},ou=users,${ldap_root}" >>${FICLDIF}
|
||||||
echo -e "changeType: modify">>${FICLDIF}
|
echo -e "changeType: modify">>${FICLDIF}
|
||||||
@@ -118,49 +140,61 @@ LdapUpdateUniq()
|
|||||||
echo -e "replace: mobile">>${FICLDIF}
|
echo -e "replace: mobile">>${FICLDIF}
|
||||||
echo -e "mobile: ${MOBILE}">>${FICLDIF}
|
echo -e "mobile: ${MOBILE}">>${FICLDIF}
|
||||||
echo -e "-" >>${FICLDIF}
|
echo -e "-" >>${FICLDIF}
|
||||||
|
echo -e "replace: quota">>${FICLDIF}
|
||||||
|
echo -e "quota: ${QUOTA}">>${FICLDIF}
|
||||||
|
echo -e "-" >>${FICLDIF}
|
||||||
#cat ${FICLDIF}
|
#cat ${FICLDIF}
|
||||||
cat ${FICLDIF} | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${LDAP_ADMIN_PASSWORD}"
|
cat ${FICLDIF} | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${LDAP_ADMIN_PASSWORD}" >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
echo " Usage $0 [ -u -a ]"
|
echo " Usage $0 [ -a ] [ -u mail -s mailsecours -m mobile -q quota ]"
|
||||||
echo " ---"
|
echo " ---"
|
||||||
echo " Ce script intérroge paheko et met a jour le mobile sur tous les comptes ldap"
|
echo " Ce script intérroge paheko et met à jour des champs tous les comptes ldap"
|
||||||
echo " Ou peut juste mettre un enregistrement a jour "
|
echo " Ou peut juste mettre un enregistrement à jour "
|
||||||
|
echo " - Les options :"
|
||||||
|
echo " ------------------"
|
||||||
echo " -a c'est pour faire une mise à jour du ldap de tous les enregistrements de paheko"
|
echo " -a c'est pour faire une mise à jour du ldap de tous les enregistrements de paheko"
|
||||||
echo " cette commande produit un log dans ${KAZ_ROOT}/log avec le nom du script et la date"
|
echo " cette commande produit un log dans ${KAZ_ROOT}/log avec le nom du script et la date"
|
||||||
echo " -u suivi dans l'ordre : "
|
echo " -u suivi du mail ( obligatoire ) et des options à changer "
|
||||||
echo " - d'un mail"
|
echo " (Les options sont cummulables )"
|
||||||
echo " - d'un telephone au format 06 ou 07 XXXXXXXXXX : 10 chiffres donc ..:-)"
|
echo " -u d'un mail"
|
||||||
echo " - et le mail de secours "
|
echo " -m d'un telephone au format 06 ou 07 XXXXXXXXXX : 10 chiffres donc ..:-)"
|
||||||
|
echo " -s le mail de secours "
|
||||||
|
echo " -q et le mail de secours"
|
||||||
|
echo " ----------------------------------------"
|
||||||
|
echo " - Exemple pour modifier juste le quota"
|
||||||
|
echo " $0 -u mail -q 10"
|
||||||
|
echo " - Exemple pour changer le quota et le mail de secours"
|
||||||
|
echo " $0 -u mail -q 10 -s mail_secours"
|
||||||
|
echo " ----------------------------------------"
|
||||||
}
|
}
|
||||||
## MAIN
|
## MAIN
|
||||||
# on traite les arguments du script
|
MOBILE=""
|
||||||
|
MAIL=""
|
||||||
|
MAILSEC=""
|
||||||
|
QUOTA=""
|
||||||
|
OPTION=""
|
||||||
[ $# -eq 0 ] && { usage; exit 1;}
|
[ $# -eq 0 ] && { usage; exit 1;}
|
||||||
for ARG in $@
|
echo "$@" | grep "\-a" >/dev/null && [ "${#}" -gt "1" ] && { echo "-a doit être seule" ; exit 1 ; }
|
||||||
do
|
while getopts "au:q:s:m:" flag; do
|
||||||
case "${ARG}" in
|
case "${flag}" in
|
||||||
-a | -A )
|
a) OPTION="TOUT" ;;
|
||||||
OPTIONS="${OPTIONS} TOUT"
|
u) MAIL=$OPTARG ;;
|
||||||
;;
|
q) QUOTA=$OPTARG ;;
|
||||||
-u | -U )
|
s) MAILSEC=$OPTARG ;;
|
||||||
OPTIONS="${OPTIONS} UNIQUE"
|
m) MOBILE=$OPTARG ;;
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
echo ${OPTIONS} | grep "UNIQUE" >/dev/null && echo ${OPTIONS} | grep "TOUT" >/dev/null && { echo "les 2 valeurs ne peuvent pas être ensemble"; exit 1;}
|
|
||||||
done
|
done
|
||||||
# on vire tout les espaces en tout genre qui serait arrivés là, on ne sait comment
|
if [ "${OPTION}" = "TOUT" ] && [ "${#}" -eq "1" ]
|
||||||
OPTIONS=$(echo ${OPTIONS} | tr -d [:space:])
|
then
|
||||||
case "$OPTIONS" in
|
LdapUpdateAll >${KAZ_ROOT}/log/$0-$(date +%d-%m-%y-%H:%M:%S).log
|
||||||
TOUT )
|
exit
|
||||||
[ $# -eq 1 ] && { LdapUpdateAll >${KAZ_ROOT}/log/$0-$(date +%d-%m-%y-%H:%M:%S).log; exit; } || { echo "-a doit ête seul" ;exit 1;}
|
fi
|
||||||
;;
|
|
||||||
UNIQUE )
|
[ -z "$MAIL" ] && { echo "usage -u -q -s -m (-u obligatoire )" ; exit ; }
|
||||||
[ $# -eq 4 ] && { LdapUpdateUniq $2 $3 $4 ; exit ; } || { echo "Il manque le mail ,le mobile ou le mail de secours" ;exit 1; }
|
[ -z "$QUOTA" ] && [ -z "$MOBILE" ] && [ -z "$MAILSEC" ] && { echo "-u ne peut pas être seul" ; exit 1 ;}
|
||||||
;;
|
|
||||||
* )
|
|
||||||
usage
|
LdapUpdateUniq ${MAIL} ${MOBILE:-IDEM} ${MAILSEC:-IDEM} ${QUOTA:-IDEM}
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|||||||
Reference in New Issue
Block a user