#!/bin/sh

echo "******************************************************************"
echo "*                                                                *"
echo "*       Script de Migration des modules existants vers           *"
echo "*                 la nouvelle instance de LDAP                   *"
echo "*                                                                *"
echo "*                                                                *"
echo "*    Auteur:   Wissem MEDIOUNI   <Wissem5@yahoo.fr>     *"
echo "******************************************************************"

echo "\n\nLa vérification de vos données est en cours ..."

if [ $# -gt 2 -o $# -lt 2 ]
  then
     echo "\nErreur de paramètres !!"
     echo "réessayer avec cette syntaxe: $0 <Server's IP Adress> <Bind's Password> "
     exit 3
fi

adress=$1
passwd=$2

ping -c 2 $adress 2>&1 > null

if [ $? -ne 0 ]
then
     echo "\nErreur de paramètres !! L'adresse du serveur OpenLDAP entré n'est pas en service !!"
     echo "réessayer avec cette syntaxe: $0 <Server's IP Adress> <Bind's Password> "
     exit 3
fi

ldapsearch  -h $adress -x -D "cn=Manager,dc=scom,dc=company" -w $passwd -b "ou=group,dc=scom,dc=company" 'cn=*_cdp' dn 2>&1 > null
retresultat=$?
case $retresultat in
  255) echo "\nVérifiez que l'adresse du serveur OpenLDAP est correcte"
       echo "La syntaxe: $0 <Server's IP Adress> <Bind's Password> "    
       exit 2
       ;;
  49)  echo "\nVérifiez que le mot de passe du Bind est correct"
       echo "La syntaxe: $0 <Server's IP Adress> <Bind's Password> "
       exit 2
       ;;
   0)  echo "\n\nVos entrées sont valides !\n\n"
       ;;
   *)  echo "\nvérifiez que vos données sont correctes!"
       exit 2
       ;;
esac



echo " --------------> Choisir une Option: 1 ou 2 ou 3 <--------------- "
echo " -                                                              - "
echo " -    1-Script Running          2-Help        3-Exit          - "
echo " -                                                              - "
echo " ---------------------------------------------------------------- \n"

read nombre
case $nombre in
     1) echo "\nVous avez choisi de démarrer le script"
    ;;
     2) echo "\nVous avez choisi le menu d'Aide !"
        echo "Ceci est le Script de Migration des modules existants vers"
        echo "la nouvelle instance de LDAP."


    echo ' ____________________________________________________________________________ '
    echo '|            AVANT                   |                APRES                  |'
    echo '|____________________________________|_______________________________________|'
    echo '|                                    |                                       |'
    echo '|            dc=scom                 |               dc=scom                 |'
    echo '|              |                     |                 |                     |'
    echo '|           dc=company                 |              dc=company                 |'
    echo '|         /    |    \                |            /    |    \                |'
    echo '|        /     |     \               |           /     |     \               |'
    echo '|       /      |      \              |          /      |      \              |'
    echo '| ou=people  ou=group ou=replicator  |   ou=people  ou=group ou=replicator   |'
    echo '|          /   |   \                 |             /   |   \                 |'
    echo '|         /    |    \                |            /    |    \                |'
    echo '|        /     |     \               |           /     |     \               |'
    echo '|       /      |      \              |          /      |      \              |'
    echo '|          forgeName                 |             forgeName                 |'
    echo '|              |                     |                 |                     |'
    echo '|    --------------------------      |      ------------------------         |'
    echo '|   |      |    |     |       |      |      |          |            |        |'
    echo '|cn=*_cdp ................ cn=*_dev  |     ...    ou=ModuleName    ...       |'
    echo '|                                    |     ----------------------------      |'
    echo '|                                    |     |       |     |     |       |     |'
    echo '|                                    |  cn=*_cdp  .... .....  ....  cn=*_dev |'
    echo '|____________________________________|_______________________________________|'



        echo "\nPour démarrer le Script --> Tapez <1>    Pour quitter le Programme --> Tapez <3>"
        read nombre
        case $nombre in
              1) echo "\nVous avez choisi de démarrer le script"
              ;;
              3) echo "Vous avez choisi de sortir !"
                 exit 3
              ;;
              *) echo "Erreur de paramètres !"
                 echo "Pour Choisir une option, tapez <1> ou <3>"
                 read nombre
                 while [ $nombre -ne 1 -a $nombre -ne 3 ]
                 do
                 echo "Erreur de paramètres !"
                 echo "Pour Choisir une option, tapez <1> ou <3>"
                 read nombre
                 done
                 if [ $nombre -eq 3 ]
                 then
            echo "Vous avez choisi de sortir !"
                exit 3
        else
            echo "\nVous avez choisi de démarrer le script"
        fi
          ;;    
     esac
    ;;
     3) echo "Vous avez choisi de sortir !"
        exit 3
          ;;
     *) echo "Erreur de paramètres !"
        echo "Pour Choisir une option, tapez <1> ou <2> ou <3>"
        read nombre
        case $nombre in
              1) echo "\nVous avez choisi de démarrer le script"
              ;;
          2) echo "\nVous avez choisi le menu d'Aide !"
                echo "Ceci est le Script de Migration des modules existants vers"
                echo "la nouvelle instance de LDAP."

            echo ' ____________________________________________________________________________ '
            echo '|            AVANT                   |                APRES                  |'
        echo '|____________________________________|_______________________________________|'
        echo '|                                    |                                       |'
        echo '|            dc=scom                 |               dc=scom                 |'
        echo '|              |                     |                 |                     |'
        echo '|           dc=company                 |              dc=company                 |'
            echo '|         /    |    \                |            /    |    \                |'
            echo '|        /     |     \               |           /     |     \               |'
            echo '|       /      |      \              |          /      |      \              |'
            echo '| ou=people  ou=group ou=replicator  |   ou=people  ou=group ou=replicator   |'
            echo '|          /   |   \                 |             /   |   \                 |'
            echo '|         /    |    \                |            /    |    \                |'
            echo '|        /     |     \               |           /     |     \               |'
            echo '|       /      |      \              |          /      |      \              |'
            echo '|          forgeName                 |             forgeName                 |'
            echo '|              |                     |                 |                     |'
            echo '|    --------------------------      |      ------------------------         |'
            echo '|   |      |    |     |       |      |      |          |            |        |'
            echo '|cn=*_cdp ................ cn=*_dev  |     ...    ou=ModuleName    ...       |'
            echo '|                                    |     ----------------------------      |'
            echo '|                                    |     |       |     |     |       |     |'
            echo '|                                    |  cn=*_cdp  .... .....  ....  cn=*_dev |'
            echo '|____________________________________|_______________________________________|'


                echo "Pour démarrer le Script --> Tapez <1>    Pour quitter le Programme --> Tapez <3>"
                read nombre
                case $nombre in
                      1) echo "\nVous avez choisi de démarrer le script"
                      ;;
                      3) echo "Vous avez choisi de sortir !"
                        exit 3
                      ;;
                      *) echo "Erreur de paramètres !"
                        echo "Pour Choisir une option, tapez <1> ou <3>"
                     read nombre
                     while [ $nombre -ne 1 -a $nombre -ne 3 ]
                     do
                        echo "Erreur de paramètres !"
                     echo "Pour Choisir une option, tapez <1> ou <3>"
                     read nombre
                     done
                     if [ $nombre -eq 3 ]
                     then
                                echo "Vous avez choisi de sortir !"
                                exit 3
                        else
                                echo "\nVous avez choisi de démarrer le script"
                        fi
                       ;;
         esac
        ;;
              3) echo "Vous avez choisi de sortir !"
                 exit 3
              ;;
              *) echo "Erreur de paramètres !"
                 echo "Pour Choisir une option, tapez <1> ou <3>"
                 read nombre
                 while [ $nombre -ne 1 -a $nombre -ne 3 ]
                 do
                 echo "Erreur de paramètres !"
                 echo "Pour Choisir une option, tapez <1> ou <3>"
                 read nombre
                 done
                 if [ $nombre -eq 3 ]
                 then
                        echo "Vous avez choisi de sortir !"
                        exit 3
                else
                        echo "\nVous avez choisi de démarrer le script"
                fi
              ;;
    esac
    ;;
esac


        echo "Veuillez entrer le Nom de la forge en question: \n"
        read frg bidon
        while [ $frg != "forge-wissem01" -a $frg != "forge-wissem02" -a $frg != "forge-wissem03" -a $frg != "forge-wissem04" -a $frg != "forge-wissem05" -a $frg != "forge-wissem06" -a $frg != "forge-wissem07" -a $frg != "forge-wissem08" -a $frg != "forge-wissem09" -a $frg != "forge-wissem10" -a $frg != "forge-wissem11" -a $frg != "forge-wissem12" -a $frg != "forge-wissem13" -a $frg != "forge-wissem14" -a $frg != "forge-wissem15" -a $frg != "forge-wissem16" -a $frg != "forge-wissem17" -a $frg != "forge-wissem18" -a $frg != "forges-wissem19" -a $frg != "forge-wissem20" ]
         do
          echo "\nNom de Forge erroné !"
          echo "vous devez Choisir Une forge de la liste:"

            echo ' ___________________________________________________________________________________ '
            echo '|  forge-wissem01     |  forge-wissem02   |  forge-wissem03   |  forge-wissem04   |  forge-wissem05     |'
            echo '|________________|______________|________________|________________|_________________|'
            echo '|  forge-wissem06    |  forge-wissem07  |  forge-wissem08   |  forge-wissem09    |  forge-wissem10      |'
            echo '|________________|______________|________________|________________|_________________|'
            echo '|  forge-wissem11     |  forge-wissem12  |  forge-wissem13   |  forge-wissem14 |  forges-wissem15     |'
            echo '|________________|______________|________________|________________|_________________|'
            echo '|  forge-wissem16  |  forge-wissem17  |  forge-wissem18  |  forge-wissem19 |  forge-wissem20 |'
            echo '|________________|______________|________________|________________|_________________|'
echo "\n"
        
  read frg bidon
        done
        echo "\nLa forge choisie est $frg \n"
    echo "\n<Attention:> vous êtes sur le point d'éxécuter un script, qui aura comme impact, des modifications"
    echo "importantes dans l'arborescence des composants de la $frg sous le serveur OpenLDAP."
        echo "\nSi vous voulez continuer, tapez <o/O/oui>, ou n'importe quelle touche pour quitter."
        read reponse
        case $reponse in
            o|O|oui)
             echo "\nVous avez choisi de continuer, le traitement est en cours !"
        ;;
          *)
                echo "Vous quitter le programme !"
            exit 3
        ;;
    esac


echo "\nRecherche des modules susceptibles d'être modifiés !"
ldapsearch  -h $adress -x -b "forgeName=$frg,ou=group,dc=scom,dc=company" 'cn=*_cdp' dn | grep '^dn: ' | egrep -iv -e '_cdp1,ou=' -e '_cdp,ou='| sed -e 's/dn: cn=//' -e 's/_cdp,.*//' | (while read x; do echo "dn: ou=$x,forgeName=$frg,ou=group,dc=scom,dc=company"; echo "objectClass: organizationalUnit"; echo "ou: $x"; echo ; done) > /tmp/oldmod.ldif
echo "."
sleep 0.5
echo "..."
sleep 0.5
echo "....."
sleep 0.5
echo "......"
sleep 0.5
echo "--> Phase 1 est achevée "

echo "\nCréation de nouvelles <ou>, comportant les noms de modules !"
ldapadd -h $adress -x -D "cn=Manager,dc=scom,dc=company" -w $passwd -f  /tmp/oldmod.ldif 2>&1 > null
echo "."
sleep 0.5
echo "..."
sleep 0.5
echo "....."
sleep 0.5
echo "......"
sleep 0.5
echo "--> Phase 2 est achevée "

echo "\nDéplacement des groupes d'un module sous l'<ou> correspondant !"
ldapsearch  -h $adress -x -b "forgeName=$frg,ou=group,dc=scom,dc=company" 'cn=*_cdp' dn | grep '^dn: ' | egrep -iv -e '_cdp1,ou=' -e '_cdp,ou='| sed -e 's/dn: cn=//' -e 's/_cdp,.*//' | (while read x; do for suff in _dev _valid _cdp _integ _invite ; do ldapmodrdn -h $adress -D "cn=Manager,dc=scom,dc=company" -r -s "ou=$x,forgeName=$frg,ou=group,dc=scom,dc=company" -w $passwd -x "cn=$x$suff,forgeName=$frg,ou=group,dc=scom,dc=company" "cn=$x$suff" -v;  done; done) 2>&1 > /dev/null
retresultat=$?
echo "."
sleep 0.5
echo "..."
sleep 0.5
echo "....."
sleep 0.5
echo "......"
sleep 0.5
if [ $retresultat -ne 0 ]
 then
    echo "Problème rencontré, certains modules n'ont pas été traités < Phase 3 non achevée >"
    echo "---> Vous devez réexécuter le Script, pour traiter les Modules restants."
    exit 5
fi
echo "--> Phase 3 est achevée "


echo "\n\nLe traitement est terminé avec succés !!"
echo "Les modules existants de la $frg ont tous migré vers la nouvelle instance de LDAP."

echo "\n\nFin de l'execution du Programme \n"
exit 0

Écrire commentaire

Commentaires: 29
  • #1

    gBqsPxAZ (mardi, 04 octobre 2022 15:47)

    20

  • #2

    gBqsPxAZ (mardi, 04 octobre 2022 15:48)

    20

  • #3

    gBqsPxAZ (mardi, 04 octobre 2022 15:51)

    20

  • #4

    gBqsPxAZ (mardi, 04 octobre 2022 15:52)

    20

  • #5

    gBqsPxAZ (mardi, 04 octobre 2022 15:52)

    20

  • #6

    gBqsPxAZ (mardi, 04 octobre 2022 15:53)

    20

  • #7

    gBqsPxAZ (mardi, 04 octobre 2022 15:53)

    20

  • #8

    gBqsPxAZ (mardi, 04 octobre 2022 15:54)

    0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

  • #9

    gBqsPxAZ (mardi, 04 octobre 2022 15:54)

    pXH4cmKD'; waitfor delay '0:0:15' --

  • #10

    gBqsPxAZ (mardi, 04 octobre 2022 15:55)

    lYN2JWyz' OR 663=(SELECT 663 FROM PG_SLEEP(15))--

  • #11

    gBqsPxAZ (mardi, 04 octobre 2022 15:55)

    1%2527%2522

  • #12

    gBqsPxAZ (mardi, 04 octobre 2022 15:56)

    20

  • #13

    gBqsPxAZ (mardi, 04 octobre 2022 15:56)

    20

  • #14

    gBqsPxAZ (mardi, 04 octobre 2022 15:57)

    20

  • #15

    gBqsPxAZ (mardi, 04 octobre 2022 15:57)

    20

  • #16

    gBqsPxAZ (mardi, 04 octobre 2022 15:58)

    20

  • #17

    gBqsPxAZ (mardi, 04 octobre 2022 15:59)

    20

  • #18

    gBqsPxAZ (mardi, 04 octobre 2022 15:59)

    20

  • #19

    gBqsPxAZ (mardi, 04 octobre 2022 16:01)

    20

  • #20

    1 waitfor delay '0:0:15' -- (mardi, 04 octobre 2022 16:02)

    20

  • #21

    gBqsPxAZ (mardi, 04 octobre 2022 16:02)

    20

  • #22

    gBqsPxAZ (mardi, 04 octobre 2022 16:03)

    20

  • #23

    gBqsPxAZ (mardi, 04 octobre 2022 16:03)

    20

  • #24

    gBqsPxAZ (mardi, 04 octobre 2022 16:04)

    20

  • #25

    gBqsPxAZ (mardi, 04 octobre 2022 16:04)

    20

  • #26

    gBqsPxAZ (mardi, 04 octobre 2022 16:05)

    20

  • #27

    gBqsPxAZ (mardi, 04 octobre 2022 16:06)

    20

  • #28

    lxbfYeaa (mardi, 05 décembre 2023 06:02)

    20

  • #29

    lxbfYeaa (mardi, 05 décembre 2023 06:03)

    20