MajNomProf.sh

De OpenWikiBSD
Aller à : navigation, rechercher

Usage

Les moulinettes de création de compte se3 et Gepi ne sont pas identiques. Un nom composé ne sera pas traité identiquement. Typiquement Ben Amar Zohair deviendra benamaz sur Gepi et ben_amaz sur se3.

Ce script parcoure l'ensemble des comptes (profs ou élèves) et vérifie qu'il s'agit bien du même utilisateur (compare le numind de gepi et le employeeNumber de se3) entre gepi et se3 et met à jour toutes les tables de gepi en fonction des données (uid, en fait) de l'annuaire.

Syntaxe

./majNomProf.sh

Prérequis

  • se3
  • gepi
  • params.txt Contient les paramètres MySQL et LDAP de mes différents scripts.

Vérifications préalables

  • NomUSerGepi existe dans Gepi

Script

#!/usr/local/bin/bash
# Parcourt toute la base GEPI users et effectue le remplacement d'un nom de professeur/élève par son nom LDAP en cas de différence.
# Modifie également le mode de loginde "gepi" vers "ldap"
# 05/10/09
# Polyp
# GPL

# On s'attaque à qui ? : "professeur" OU "eleve"
GEPISTATUT=professeur
MAILADMIN=mon@mail

# Récupération des paramètres depuis le fichier eponyme
FICPARAMS=params.txt
IPLDAP=`cat $FICPARAMS |grep IPLDAP|cut -d":" -f2`
BASEDN=`cat $FICPARAMS |grep BASEDN|cut -d":" -f2-99`
LDAPPASS=`cat $FICPARAMS |grep LDAPPASS|cut -d":" -f2`
ADMINLDAP=`cat $FICPARAMS |grep ADMINLDAP|cut -d":" -f2`
SQLUSER=`cat $FICPARAMS |grep SQLUSER |cut -d":" -f2`
SQLPASS=`cat $FICPARAMS |grep SQLPASS|cut -d":" -f2`
BDD=`cat $FICPARAMS |grep BDD|cut -d":" -f2`
REQTOT=""

# On aligne le mode de login sur l'annuaire
LDAPPROFS="use $BDD; update utilisateurs set auth_mode=\"ldap\"  where statut=\"$GEPISTATUT\";"
REQTOT=$REQTOT"\r
"$LDAPPROFS
REQSQLLDAPPROFS=`mysql -u $SQLUSER -p$SQLPASS --batch -e "$LDAPPROFS"`

# Cherchons les professeur/eleve dans la base SQL de Gepi
SQLPROFS="use $BDD; select login  from utilisateurs where statut=\"$GEPISTATUT\" ;"
REQSQLPROFS=`mysql -u $SQLUSER -p$SQLPASS --batch -e "$SQLPROFS"|grep -v "login"`

for	PROF in $REQSQLPROFS
	do

MYSQL="use $BDD; select numind from utilisateurs where login=\"$PROF\";"
REQSQL=`mysql -u $SQLUSER -p$SQLPASS --batch -e "$MYSQL"|grep -v numind`

LDAP=`ldapsearch -h $IPLDAP -x -b ou=People,$BASEDN  -D cn=$ADMINLDAP,$BASEDN -w $LDAPPASS "employeeNumber=$REQSQL" |grep "uid:"|cut -d":" -f2|cut -d" " -f2`

if [ "$GEPISTATUT" == "professeur" ]
then

if [ "$PROF" != "$LDAP" ]
then
REQTOT=$REQTOT"$PROF ===> $LDAP"


MYSQL="
use $BDD;update utilisateurs set login=\"$LDAP\" where statut=\"$GEPISTATUT\" and login=\"$PROF\";
 update j_professeurs_matieres set  id_professeur=\"$LDAP\" where  id_professeur=\"$PROF\";
 delete from j_professeurs_matieres where id_professeur=\"$LDAP\" and id_matiere=\"$PROF\";
 update j_groupes_professeurs set login=\"$LDAP\" where  login=\"$PROF\";
 update j_eleves_professeurs set professeur=\"$LDAP\" where  professeur=\"$PROF\";
 update ct_entry set id_login=\"$LDAP\" where  id_login=\"$PROF\";
 update ct_devoirs_entry set id_login=\"$LDAP\" where  id_login=\"$PROF\";
 update edt_cours set login_prof=\"$LDAP\" where  login_prof=\"$PROF\";
 update preferences set login=\"$LDAP\" where  login=\"$PROF\";
 update log set LOGIN=\"$LDAP\" where  LOGIN=\"$PROF\";
 update tempo2 set col1=\"$LDAP\" where  col1=\"$PROF\";
 update tentatives_intrusion set login=\"$LDAP\" where  login=\"$PROF\";
 update inscription_j_login_items set login=\"$LDAP\" where  login=\"$PROF\";   "

REQTOT=$REQTOT" 
"$MYSQL

mysql -u $SQLUSER -p$SQLPASS --batch -e "$MYSQL"

fi
else
echo "$PROF :OK"
fi

done

echo $REQTOT |mail -s "Maj GEPI" $MAILADMIN

Sortie