[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 # 3 ## $Id: change_dn_ldif.sh 7723 2013-03-18 23:57:26Z keyser $ ## 4 # 5 ##### Script permettant de changer de la base dn de l'annuaire ldap ##### 6 # franck molle 7 # maj 09/2005 8 9 if [ "$1" = "--help" -o "$1" = "-h" ] 10 then 11 echo "Script permettant de changer la base dn de l'annuaire LDAP" 12 echo "Usage : Aucune option" 13 exit 14 fi 15 16 17 #Couleurs 18 COLTITRE="\033[1;35m" # Rose 19 COLPARTIE="\033[1;34m" # Bleu 20 21 COLTXT="\033[0;37m" # Gris 22 COLCHOIX="\033[1;33m" # Jaune 23 COLDEFAUT="\033[0;33m" # Brun-jaune 24 COLSAISIE="\033[1;32m" # Vert 25 26 COLCMD="\033[1;37m" # Blanc 27 28 COLERREUR="\033[1;31m" # Rouge 29 COLINFO="\033[0;36m" # Cyan 30 31 ERREUR() 32 { 33 echo -e "$COLERREUR" 34 echo "ERREUR!" 35 echo -e "$1" 36 echo -e "$COLTXT" 37 exit 1 38 } 39 POURSUIVRE() 40 { 41 REPONSE="" 42 while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ] 43 do 44 echo -e "$COLTXT" 45 echo -e "Peut-on poursuivre? ($COLCHOIX}O/n$COLTXT}) $COLSAISIE\c" 46 read REPONSE 47 if [ -z "$REPONSE" ]; then 48 REPONSE="o" 49 fi 50 done 51 52 if [ "$REPONSE" != "o" -a "$REPONSE" != "O" ]; then 53 ERREUR "Abandon!" 54 fi 55 } 56 57 58 ### on suppose que l'on est sous debian ;) #### 59 WWWPATH="/var/www" 60 61 clear 62 echo -e "$COLTITRE" 63 echo "********************************" 64 echo "* SCRIPT PERMETTANT DE CHANGER *" 65 echo "* LA BASE DN DANS UN FICHIER LDIF *" 66 echo "********************************" 67 echo -e "$COLTXT" 68 echo "Appuyez sur Entree pour continuer........" 69 echo -e "$COLTXT" 70 read pause 71 72 ## recuperation des variables necessaires pour interoger mysql ### 73 if [ -e $WWWPATH/se3/includes/config.inc.php ]; then 74 dbhost=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbhost=" | cut -d = -f 2 |cut -d \" -f 2` 75 dbname=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbname=" | cut -d = -f 2 |cut -d \" -f 2` 76 dbuser=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbuser=" | cut -d = -f 2 |cut -d \" -f 2` 77 dbpass=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbpass=" | cut -d = -f 2 |cut -d \" -f 2` 78 else 79 echo "Fichier de conf inaccessible désolé !!" 80 echo "le script ne peut se poursuivre" 81 exit 1 82 fi 83 84 85 REPONSE="" 86 while [ "$REPONSE" != "g" -a "$REPONSE" != "f" ] 87 do 88 echo -e "$COLTXT" 89 echo -e "Voulez vous générer un fichier ldif depuis l'annuaire courant\n ou bien utiliser un fichier préalablement sauvegardé ? ($COLCHOIX}g/f$COLTXT}) $COLSAISIE\c" 90 read REPONSE 91 92 done 93 94 if [ "$REPONSE" == "g" ]; then 95 PASSLDAP=$(cat /etc/ldap.secret) 96 ROOTDN=$(cat /etc/ldap/slapd.conf | grep rootdn | cut -f3 | sed -e s/\"//g) 97 echo -e "$COLCMD" 98 echo "patientez exportation de l'annaire en cours....." 99 echo -e "$COLTXT" 100 ldapsearch -xLLL -D "$ROOTDN" -w "$PASSLDAP" objectClass=* > /tmp/export_ldap.ldif && echo -e "$COLCMD Exportation effectueé avec succès" 101 if [ $? != 0 ]; then 102 ERREUR "L'exportation du fichier ldif a echoué !" 103 fi 104 else 105 echo -e "$COLTXT" 106 echo "Avant de continuer, vous devez avoir déposé votre fichier ldif nommé export_ldap.ldif dans /tmp" 107 echo -e "$COLTXT" 108 POURSUIVRE 109 fi 110 111 112 113 114 ### Verification que le serveur ldap est bien sur se3 et non pas déporté" 115 116 #### Tout semble ok on peut poursuivre # 117 # echo "ce script va vous permettre de changer la base dn de l'annuaire sur votre fichier ldif " 118 echo -e "$COLTXT" 119 echo -e "Que desirez vous comme base dn de remplacement ?" 120 echo -e "Attention aux fautes de frappe !" 121 echo -e "la base dn doit commencer par dc= ou bien ou= $COLSAISIE" 122 read NBASEDN 123 124 ### recuperation des parametres actuels de l'annuaire dans la base #### 125 BASEDN=`echo "SELECT value FROM params WHERE name=\"ldap_base_dn\"" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 126 ADMLDAP=`echo "SELECT value FROM params WHERE name=\"adminRdn\"" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 127 PASSLDAP=`echo "SELECT value FROM params WHERE name=\"adminPw\"" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 128 129 #echo "voici le Rdm de l annuaire $ADMLDAP" 130 #echo "et voici son pass $PASSLDAP" 131 132 133 echo -e "$COLINFO" 134 echo -e "Voici votre base dn actuelle $COLINFO" 135 echo $BASEDN 136 echo -e "$COLTXT}Et voici celle qui va la remplacer$COLINFO" 137 echo $NBASEDN 138 echo -e "$COTXT" 139 140 141 POURSUIVRE 142 143 144 BASEDNT=$BASEDN:0:6} 145 146 echo '#!/usr/bin/perl -w 147 # script de remplacement de la base dn de l annaire 148 # recherche de la base dn dans le fichier ldif, remplacement 149 # par la nouvelle base dn et ecriture d un nouveau fichier ldif 150 # franck molle 04/2004 sur les suggestions de plouf 151 open(ENTREE, "/tmp/export_ldap.ldif") or die "impossible"; 152 undef $/; 153 my $dbasedn = $ARGV[0]; 154 my $nbasedn = $ARGV[1]; 155 my $basedn = $ARGV[2]; 156 $contenu = <ENTREE>; 157 open(SORTIE, ">/root/export_ldap_mod.ldif"); 158 $contenu=~s/$basedn/##replace##/g; 159 $contenu=~s/$dbasedn.*\n/####replace####/g; 160 $contenu=~s/####replace####.*\n/##replace##\n/g; 161 $contenu=~s/##replace##/$nbasedn/g; 162 print SORTIE $contenu; 163 close(SORTIE);'> /root/change_dn.pl 164 165 166 chmod 700 /root/change_dn.pl 167 ### appel du prog perl pour changer la chaine de caractere correspondant a la base dn #### 168 169 /root/change_dn.pl "$BASEDNT" "$NBASEDN" "$BASEDN" && echo -e "$COLCMD Nouveau fichier ldif généré avec succès dans /root/export_ldap_mod.ldif" 170 #/root/changedn.pl "$BASEDNT" "$NBASEDN" "$BASEDN" && echo -e "$COLCMD Nouveau fichier ldif généré avec succès dans /root/export_ldap_mod.ldif" 171 if [ $? != 0 ]; then 172 ERREUR "Le traitement du fichier ldif a echoué" 173 fi 174 175 176 177 ### debug ### 178 #echo " resultat du cgt de base apres le prg perl" 179 #cat /root/export_ldap_mod.ldif | more 180 181 exit 0 182 183 184 185 186
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |