[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  #!/bin/bash
   2  
   3  # Script destiné à restaurer une sauvegarde de l'annuaire LDAP.
   4  # Auteur: Stephane Boireau
   5  # Dernière modification: 22/01/2008
   6  
   7  #Couleurs
   8  COLTITRE="\033[1;35m"   # Rose
   9  COLPARTIE="\033[1;34m"  # Bleu
  10  
  11  COLTXT="\033[0;37m"     # Gris
  12  COLCHOIX="\033[1;33m"   # Jaune
  13  COLDEFAUT="\033[0;33m"  # Brun-jaune
  14  COLSAISIE="\033[1;32m"  # Vert
  15  
  16  COLCMD="\033[1;37m"     # Blanc
  17  
  18  COLERREUR="\033[1;31m"  # Rouge
  19  COLINFO="\033[0;36m"    # Cyan
  20  
  21  ERREUR()
  22  {
  23          echo -e "$COLERREUR"
  24          echo "ERREUR!"
  25          echo -e "$1"
  26          echo -e "$COLTXT"
  27          exit 0
  28  }
  29  
  30  POURSUIVRE()
  31  {
  32          REPONSE=""
  33          while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
  34          do
  35                  echo -e "$COLTXT"
  36                  echo -e "Peut-on poursuivre? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
  37                  read REPONSE
  38          done
  39  
  40          if [ "$REPONSE" != "o" ]; then
  41                  ERREUR "Abandon!"
  42          fi
  43  }
  44  
  45  POURSUIVRE_OU_CORRIGER()
  46  {
  47      REPONSE=""
  48      while [ "$REPONSE" != "1" -a "$REPONSE" != "2" ]
  49      do
  50          if [ ! -z "$1" ]; then
  51              echo -e "$COLTXT"
  52              echo -e "Peut-on poursuivre ($COLCHOIX}1$COLTXT}) ou voulez-vous corriger ($COLCHOIX}2$COLTXT}) ? [$COLDEFAUT}$1}$COLTXT}] $COLSAISIE\c"
  53              read REPONSE
  54  
  55              if [ -z "$REPONSE" ]; then
  56                  REPONSE="$1"
  57              fi
  58          else
  59              echo -e "$COLTXT"
  60              echo -e "Peut-on poursuivre ($COLCHOIX}1$COLTXT}) ou voulez-vous corriger ($COLCHOIX}2$COLTXT}) ? $COLSAISIE\c"
  61              read REPONSE
  62          fi
  63      done
  64  }
  65  
  66  . /usr/share/se3/includes/config.inc.sh -lm
  67  
  68  BASEDN="$ldap_base_dn"
  69  ADMINRDN="$adminRdn"
  70  ADMINPW="$adminPw"
  71  PEOPLERDN="$peopleRdn"
  72  GROUPSRDN="$groupsRdn"
  73  RIGHTSRDN="$rightsRdn"
  74  
  75  PEOPLER=`echo $PEOPLERDN |cut -d = -f 2`
  76  RIGHTSR=`echo $RIGHTSRDN |cut -d = -f 2`
  77  GROUPSR=`echo $GROUPSRDN |cut -d = -f 2`
  78  
  79  
  80  
  81  dossier=/var/se3/save/ldap
  82  mkdir -p $dossier}
  83  
  84  ladate=$(date "+%Y%m%d.%H%M%S")
  85  
  86  # Sauvegarde préalable
  87  echo -e "$COLTXT"
  88  echo "Sauvegarde préalable de l'annuaire dans son état actuel..."
  89  echo -e "$COLCMD\c"
  90  ldapsearch -xLLL -D "$ADMINRDN,$BASEDN" -w $ADMINPW > $dossier/svg_$ladate}.ldif
  91  
  92  if [ "$?" = "0" ]; then
  93      echo -e "$COLTXT"
  94      echo "Sauvegarde réussie."
  95  else
  96      echo -e "$COLERREUR"
  97      echo "Echec de la sauvegarde préalable."
  98      echo "Il n'est pas très raisonnable de poursuivre sans disposer"
  99      echo "d'une sauvegarde récente."
 100  
 101      REPONSE=""
 102      while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 103      do
 104          echo -e "$COLTXT"
 105          echo -e "Voulez-vous continuer néanmoins? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
 106          read REPONSE
 107      done
 108  
 109      if [ "$REPONSE" = "n" ]; then
 110          echo -e "$COLERREUR"
 111          echo "Abandon."
 112          echo -e "$COLTXT"
 113          exit
 114      else
 115          REPONSE=""
 116          while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 117          do
 118              echo -e "$COLTXT"
 119              echo -e "Etes vous sûr de vouloir continuer? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
 120              read REPONSE
 121          done
 122      fi
 123  
 124      if [ "$REPONSE" = "n" ]; then
 125          echo -e "$COLERREUR"
 126          echo "Abandon."
 127          echo -e "$COLTXT"
 128          exit
 129      fi
 130  fi
 131  
 132  echo -e "$COLTXT"
 133  echo "Choix de la sauvegarde à restaurer"
 134  cd $dossier
 135  echo -e "Les sauvegardes présentes dans le dossier $COLINFO}$dossier}$COLTXT} sont:"
 136  echo -e "$COLCMD\c"
 137  ls -lht *.ldif
 138  
 139  echo -e "$COLTXT"
 140  echo "Vous pouvez aussi choisir un fichier LDIF situé"
 141  echo "ailleurs dans l'aborescence."
 142  
 143  echo -e "$COLTXT"
 144  echo "Quelle sauvegarde souhaitez-vous restaurer?"
 145  
 146  REPONSE=""
 147  while [ "$REPONSE" != "1" ]
 148  do
 149      echo -e "$COLTXT}Votre choix: $COLSAISIE\c"
 150      read -e SVG
 151  
 152      if [ ! -e "$SVG" ]; then
 153          echo -e "$COLERREUR"
 154          echo -e "Le fichier $COLINFO}$SVG}$COLERREUR} n'existe pas."
 155  
 156          REPONSE=2
 157      else
 158          echo -e "$COLTXT"
 159          echo "Vous avez choisi:"
 160          echo -e "$COLCMD\c"
 161          ls -lh $SVG
 162  
 163          POURSUIVRE_OU_CORRIGER
 164      fi
 165  done
 166  
 167  #v=$(df -h | grep /var | grep -v "/var/se3" | sed -e "s/ \{2,\}/ /g" | cut -d" " -f5 | sed -e "s/%//")
 168  #if [ $v -gt 50 ]; then
 169  #
 170  #else
 171  #
 172  #fi
 173  
 174  REP=""
 175  while [ -z "$REP" ]
 176  do
 177      echo -e "$COLTXT"
 178      echo "Arrêt du serveur d'annuaire..."
 179      /etc/init.d/slapd stop
 180      sleep 2
 181      test=$(ps aux | grep slapd | grep -v grep)
 182      if [ ! -z "$test" ]; then
 183          echo -e "$COLERREUR"
 184          echo "L'arrêt du serveur a échoué."
 185          echo "Il reste au moins un processus slapd:"
 186          echo -e "$COLCMD\c"
 187          ps aux | grep slapd | grep -v grep
 188  
 189          REPONSE=""
 190          while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 191          do
 192              echo -e "$COLTXT"
 193              echo -e "Voulez-vous réessayer d'arrêter slapd? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
 194              read REPONSE
 195          done
 196  
 197          if [ "$REPONSE" = "n" ]; then
 198              echo -e "$COLERREUR"
 199              echo "Abandon."
 200              exit 1
 201          fi
 202      else
 203          REP="OK"
 204      fi
 205  done
 206  
 207  echo -e "$COLTXT"
 208  echo "Préparation de la nouvelle arborescence /var/lib/ldap"
 209  echo -e "$COLCMD\c"
 210  mv /var/lib/ldap /var/lib/ldap.$ladate}
 211  mkdir /var/lib/ldap
 212  cp /var/lib/ldap.$ladate}/DB_CONFIG /var/lib/ldap/
 213  
 214  echo -e "$COLTXT"
 215  echo -e "Restauration de la sauvegarde $COLINFO}$SVG"
 216  echo -e "$COLCMD\c"
 217  slapadd -c -l $SVG
 218  
 219  
 220  if [ "$?" = "0" ]; then
 221      echo -e "$COLTXT"
 222      echo "La commande a semble-t-il réussi."
 223      # Droits sur /var/lib/ldap
 224  #     [ -z $(grep "3.1" /etc/debian_version) ] && chown -R openldap.openldap /var/lib/ldap
 225      echo -e "$COLTXT"
 226      echo -e "Redémarrage du serveur d'annuaire LDAP"
 227      echo -e "$COLCMD\c"
 228      /etc/init.d/slapd start
 229      test=$(ps aux | grep slapd | grep -v grep)
 230      if [ -z "$test" ]; then
 231          echo -e "$COLERREUR"
 232          echo "Le redémarrage du service slapd a échoué."
 233  
 234          echo -e "$COLTXT"
 235          echo "Vous devrez redémarrer manuellement le service par:"
 236          echo -e "$COLCMD\c"
 237          echo "   /etc/init.d/slapd start"
 238      else
 239          echo -e "$COLTXT"
 240          echo "Rédémarrage du service slapd réussi."
 241      fi
 242        
 243      echo -e "$COLTXT"
 244      echo "Après redémarrage du LDAP, redémarrez si nécessaire les services samba"
 245      echo "et apache2se."
 246      
 247  else
 248      echo -e "$COLERREUR"
 249      echo "La commande a renvoyé un code d'erreur."
 250  #     [ -z $(grep "3.1" /etc/debian_version) ] && chown -R openldap.openldap /var/lib/ldap
 251      REPONSE=""
 252      while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 253      do
 254          echo -e "$COLTXT"
 255          echo -e "Voulez-vous remettre en place l'arborescence précédente? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
 256          read REPONSE
 257      done
 258  
 259      if [ "$REPONSE" = "o" ]; then
 260          echo -e "$COLTXT"
 261          echo -e "Rétablissement de la version antérieure..."
 262          echo -e "$COLCMD\c"
 263          rm -fr /var/lib/ldap
 264          mv /var/lib/ldap.$ladate} /var/lib/ldap
 265  
 266          echo -e "$COLTXT"
 267          echo -e "Redémarrage du serveur d'annuaire LDAP"
 268          echo -e "$COLCMD\c"
 269          /etc/init.d/slapd start
 270          test=$(ps aux | grep slapd | grep -v grep)
 271          if [ -z "$test" ]; then
 272              echo -e "$COLERREUR"
 273              echo "Le redémarrage du service slapd a échoué."
 274  
 275              echo -e "$COLTXT"
 276              echo "Vous devrez redémarrer manuellement le service par:"
 277              echo -e "$COLCMD\c"
 278              echo "   /etc/init.d/slapd start"
 279          else
 280              echo -e "$COLTXT"
 281              echo "Rédémarrage du service slapd réussi."
 282          fi
 283          echo -e "$COLTXT"
 284          echo "Après redémarrage du LDAP, redémarrez si nécessaire les services samba"
 285          echo "et apache2se."
 286          exit 1
 287      else
 288          echo -e "$COLERREUR"
 289          echo "L'opération a échoué."
 290          echo "Le serveur d'annuaire LDAP n'a pas été redémarré."
 291          echo -e "$COLTXT"
 292          exit 1
 293      fi
 294  
 295  fi
 296  
 297  DOMAINSID=`net getlocalsid | cut -d: -f2 | sed -e "s/ //g"`
 298  #Change le SambaPrimaryGroupe
 299  echo "Modification du SambaPrimaryGroupe en arriere plan dans 2mn"
 300  AT_SCRIPT=/root/modif_SambaPrimaryGroupe.sh
 301  echo "#!/bin/bash
 302  ldapsearch -x -b $PEOPLERDN,$BASEDN '(objectclass=*)' uid | grep -v People | grep -v \# | grep uid: | cut -d\" \" -f2 | while read ID
 303  do
 304  ldapmodify -x -v -D "$ADMINRDN,$BASEDN" -w "$ADMINPW" <<EOF
 305  dn: uid=\$ID,$PEOPLERDN,$BASEDN
 306  changetype: modify
 307  replace: sambaPrimaryGroupSID
 308  sambaPrimaryGroupSID: $DOMAINSID-513
 309  EOF
 310  done
 311  " >$AT_SCRIPT
 312  chmod 700 $AT_SCRIPT
 313  at now +2 minutes -f $AT_SCRIPT >/dev/null
 314  
 315  #rm -rf /var/lib/ldap


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