[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/sbin/ -> change_dn_ldif.sh (source)

   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  


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1