[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  #!/bin/bash
   2  #
   3  ##### Script permettant de changer le domaine mail des utilisateurs dans l'annuaire ldap #####
   4  #
   5  # Auteur: Stephane Boireau (Bernay/Pont-Audemer (27))
   6  #
   7  ## $Id ##
   8  #
   9  # Dernière modif: 12/09/2006
  10  
  11  if [ "$1" = "--help" -o "$1" = "-h" ]
  12  then
  13      echo "Script permettant de changer le domaine mail des utilisateurs"
  14      echo "dans l'annuaire LDAP."
  15      echo "Usage : Aucune option"
  16      echo "        Il suffit de répondre aux questions."
  17      exit
  18  fi
  19  
  20  echo "************************"
  21  echo "* Script de correction *"
  22  echo "*   du domaine mail    *"
  23  echo "************************"
  24  echo ""
  25  bon_domaine=""
  26  while [ -z "$bon_domaine" ]
  27  do
  28      echo ""
  29      echo "Quel est le nom du domaine mail à mettre en place?"
  30      echo -e "Domaine: \c"
  31      read bon_domaine
  32  
  33      echo "L'adresse mail de toto sera transformée en toto@$bon_domaine"
  34      echo -e "Est-ce correct? (o/n) \c"
  35      read REPONSE
  36  
  37      if [ "$REPONSE" != "o" ]; then
  38          bon_domaine=""
  39      fi
  40  done
  41  
  42  echo ""
  43  echo "Sauvegarde initiale du LDAP."
  44  echo "Le serveur LDAP va être arrêté puis redémarré."
  45  echo "Appuyez sur ENTREE pour poursuivre..."
  46  read PAUSE
  47  
  48  ladate=$(date +"%Y.%m.%d-%H.%M.%S");
  49  #tmp=/root/tmp/$ladate
  50  tmp=/home/_root_tmp_correction_domaine_mail_$ladate}
  51  mkdir -p $tmp
  52  
  53  ROOTDN=$(cat /etc/ldap/slapd.conf | grep '^rootdn' | tr '\n' ' ' | cut -d'"' -f2)
  54  BASE=$(cat /etc/ldap/ldap.conf | grep '^BASE' | tr "\n" " " | sed -e "s/ \{2,\}/ /g" | cut -d" " -f2)
  55  
  56  ldapsearch -xLLL -D "$ROOTDN" -w "$(cat /etc/ldap.secret)" > $tmp/ldapsearch_$ladate}.ldif
  57  
  58  /etc/init.d/slapd stop
  59  sleep 5
  60  if ps aux | grep slapd | grep -v grep > /dev/null ;then
  61      echo "ERREUR: Le serveur LDAP n'est semble-t-il pas arrêté."
  62      echo "Par précaution, le script s'arrête là."
  63      exit
  64  else
  65      echo "LDAP arrêté."
  66  fi
  67  # Le /var/lib/ldap a tendance à être trop gros pour faire une sauvegarde tar
  68  #tar -czf $tmp/var_lib_ldap_${ladate}.tar.gz /var/lib/ldap
  69  slapcat > $tmp/slapcat_$ladate}.ldif
  70  /etc/init.d/slapd start
  71  sleep 5
  72  
  73  if ps aux | grep slapd | grep -v grep > /dev/null ;then
  74      echo "LDAP redémarré."
  75  else
  76      echo "ERREUR: Le serveur LDAP n'est semble-t-il pas redémarré."
  77      echo "Par précaution, le script s'arrête là."
  78      exit
  79  fi
  80  
  81  echo "#!/bin/bash" > $tmp/restaure_ldap.sh
  82  echo "/etc/init.d/slapd stop
  83  sleep 5
  84  if ps aux | grep slapd | grep -v grep > /dev/null ;then
  85      echo \"ERREUR: Le serveur LDAP n'est semble-t-il pas arrêté.\"
  86      echo \"Par précaution, le script s'arrête là.\"
  87      exit
  88  else
  89      echo \"LDAP arrêté.\"
  90  fi
  91  cd /
  92  tar -xzf $tmp/var_lib_ldap_$ladate}.tar.gz
  93  /etc/init.d/slapd start
  94  if ps aux | grep slapd | grep -v grep > /dev/null ;then
  95      echo \"LDAP redémarré.\"
  96  else
  97      echo \"ERREUR: Le serveur LDAP n'est semble-t-il pas redémarré.\"
  98      echo \"Il faut le redémarrer à la main.\"
  99      exit
 100  fi" >> $tmp/restaure_ldap.sh
 101  
 102  chmod +x $tmp/restaure_ldap.sh
 103  
 104  echo ""
 105  echo "Début des corrections..."
 106  ldapsearch -xLLL -b "ou=People,$BASE" uid | grep "^uid: " | sed -e "s/^uid: //" | while read login
 107  do
 108      if [ "$login" != "ldapadm" -a "$login" != "smbadm" -a "$login" != "samba" -a "$login" != "root" -a "$login" != "admin" ]; then
 109          if ! ldapsearch -xLLL uid=$login mail | grep "^mail: $login@$bon_domaine$" > /dev/null; then
 110              echo "dn: uid=$login,ou=People,$BASE" > $tmp/modif_email_$login}.ldif
 111              echo "changetype: modify" >> $tmp/modif_email_$login}.ldif
 112              echo "replace: mail" >> $tmp/modif_email_$login}.ldif
 113              echo "mail: $login@$bon_domaine" >> $tmp/modif_email_$login}.ldif
 114              echo "" >> $tmp/modif_email_$login}.ldif
 115              ldapmodify -x -D "$ROOTDN" -w "$(cat /etc/ldap.secret)" -f $tmp/modif_email_$login}.ldif
 116          fi
 117      fi
 118  done
 119  
 120  echo "Terminé."
 121  
 122  echo ""
 123  echo "Pour restaurer le LDAP en cas de problème, lancer:"
 124  echo "$tmp/restaure_ldap.sh"
 125  echo ""


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