[UNIX] crée un script pour recheche en boucle

Résolu
Bonjour

j'ai besoin de votre aide (débutant kornshell UNIX) pour crée un script qui va rechercher en boucle dans le serveur ,

bon j'ai un serveur de donner qui est schématiser ainsi :
http://img297.imageshack.us/img297/4287/newbitmapimagexg3.png

j'ai déjà crée un script qui permet de faire la recherche mais pas en boucle

petite aperçu de mon script:

# usage: sh Lget_company_access.sh NSG GFM ARM APG

export LIST=$*
STRING="|"
for LEVEL in $LIST
do
STRING="${STRING}(lawsonlevel=${LEVEL})"
done

QUERY="(&(|(slbapplication=lawson)(slbapplication=lawsonlf))(${STRING}))"

/lawtrans/secu/bin/Lsearch "${QUERY}" lawsonlevel lawsonchildren lawsoncompanyI
lawsoncompanyF


c'est a dire

lorsque j'execute le script sur par exemple MEA

donc je rentre sous unix :
./Lget_company_access.sh MEA

il me trouve tout une liste de compagnie :

dn: cn=MEA,ou=struct,o=slb,c=an
lawsonlevel: MEA
lawsonchildren: APG
lawsonchildren: ARM
lawsonchildren: BMP
lawsonchildren: CHG
lawsonchildren: EEG
lawsonchildren: FMC
lawsonchildren: GFM
lawsonchildren: ING
lawsonchildren: INM
lawsonchildren: IRG
lawsonchildren: TMV
lawsonchildren: MEA_PHQ
lawsonchildren: MEA_FE
lawsonchildren: MEA_C/JA
lawsonchildren: QTG


je suis donc obliger d'appeler encore une fois mon script pour voir ce que contient GFM par exemple :

./Lget_company_access.sh GFM

j'ai cette fois ci le N°de compagnie de GFM et les enfants de GFM

dn: cn=GFM,ou=struct,o=slb,c=an
lawsonlevel: GFM
lawsonchildren: AE
lawsonchildren: OM
lawsonchildren: YE
lawsoncompanyF: 9936


de la refais appel au script pour voir ce qui ya dans AE OM YE

je fais donc :
./Lget_company_access.sh AE OM YE

et j'ai

dn: cn=OM- Oman,ou=struct,o=slb,c=an
lawsonlevel: OM
lawsoncompanyF: 2
lawsoncompanyF: 24
lawsoncompanyF: 4000
lawsoncompanyF: 4050
lawsoncompanyF: 4051
lawsoncompanyF: 4052
lawsoncompanyF: 8

dn: cn=YE- Yemen,ou=struct,o=slb,c=an
lawsonlevel: YE
lawsoncompanyF: 4000


cette fois ci c'est bon je touche donc le fond .

La problématique commence ici:

Je veux créer un script qui permette de faire la recherche en boucle sans devoir rappeler mon script ,
1- que le fichier de sortie comporte uniquement Lawsoncompany(F ou I): N°de compagnie
2- ne comportent pas de chevauchement , pas de doublon le tout dans l'ordre

c'est a dire sous cette forme pour la compagnie GFM (par exemple):

lawsoncompanyF: 2
lawsoncompanyF: 8
lawsoncompanyF: 24
lawsoncompanyF: 4000
lawsoncompanyF: 4050-4052
lawsoncompanyF: 9936


voila voila merci encore et d'avance
Configuration: Windows XP
Firefox 2.0.0.5

4 réponses

  1. bonjour

    please j'ai vraiment besoin d'aide svp.

    dites au moins comment on fais pour faire la recherche en boucle svp.

    merci
    0
    1. Modérateur
      Salut,

      Fais une fonction de ton script et rappelle-la après avoir fait un test de condition d'existence d'un (ou des) enfant(s).

      ;-))
      0
      1. je te remercie d'avoir répondu

        le problème c'est que je débute en UNIX , depuis hier je rame a trouver une soluce mais je sais que c'est faisable ,je ne connais que le strict minimum et c'est pourquoi pourrait tu m'éclaircir car je ne c'est pas comment faire pour faire une fct du script en la rappellent après avoir fait un test de condition d'existence d'un (ou des) enfant(s).

        mercie du fond du coeur
        0
    2. SVP

      j'ai vraiment besoin d'aides

      pouvez vous au moins m'aider a améliorer mon script .please
      0
      1. je n'ai pas a réussi , mais je vais commencer étape par étape,
        pour commencer pourriez vous m'aider a convertir cette liste de telle sorte que je n'ai uniquement lawsoncompanyF(ou I):N°de compagnie
        c'est a dire ne comportent pas de chevauchement , pas de doublon le tout dans l'ordre

        Fichier d'entrer :

        dn: cn=MEA,ou=struct,o=slb,c=an
        lawsonlevel: MEA
        lawsonchildren: APG
        lawsonchildren: ARM
        lawsonchildren: BMP
        lawsonchildren: CHG
        lawsonchildren: EEG
        lawsonchildren: FMC
        lawsonchildren: GFM
        lawsonchildren: ING
        lawsonchildren: INM
        lawsonchildren: IRG
        lawsonchildren: TMV
        lawsonchildren: MEA_PHQ
        lawsonchildren: MEA_FE
        lawsonchildren: MEA_C/JA
        lawsonchildren: QTG
        dn: cn=GFM,ou=struct,o=slb,c=an
        lawsonlevel: GFM
        lawsonchildren: AE
        lawsonchildren: OM
        lawsonchildren: YE
        lawsoncompanyF: 9936
        dn: cn=OM- Oman,ou=struct,o=slb,c=an
        lawsonlevel: OM
        lawsoncompanyF: 2
        lawsoncompanyF: 24
        lawsoncompanyF: 4000
        lawsoncompanyF: 4050
        lawsoncompanyF: 4051
        lawsoncompanyF: 4052
        lawsoncompanyF: 8
        dn: cn=YE- Yemen,ou=struct,o=slb,c=an
        lawsonlevel: YE
        lawsoncompanyF: 4000


        Fichier de sortie
        lawsoncompanyF: 2
        lawsoncompanyF: 8
        lawsoncompanyF: 24
        lawsoncompanyF: 4000
        lawsoncompanyF: 4050-4052
        lawsoncompanyF: 9936


        merci d'avance
        0
        1. bon j'ai du récolter pas mal d' info a droite a gauche (collaborateur ,forum) pour en arriver la :
          je n'arrive pas a créer la recherche en boucle , j'appelle le script(Lget_company_access.sh) qui est dans mon dossier pour lancer la recherche sur MEA puis créer un fichier de sortie FILE et c'est a cet endroit que je bloque car je veux lancer une seconde fois voir plusieurs fois afin qu'il me trouve toute l'arborescence de MEA .(concerne uniquement la première ligne)

          l'autre partie du script consiste a convertir la liste d'entrer FILE

          /homelaw/MTemir/Lget_company_access.sh MEA | grep -i lawsonchildren > FILE
          
          grep -E 'lawsoncompanyF:|lawsoncompanyI:' FILE > fichiertmp1
          sort -u -k1,1 -k2,2n fichiertmp1  > FILE1
          rm fichiertmp1
          
          awk '
          function FctFinEnreg()
          {
                  if (TopListe == 1) {
                          print "-"Wprecedent
                          TopListe=0
                  } else {
                          print ""
                  }
          }
          BEGIN {
                  Wcie=""
                  Wprecedent=9999999
                  TopListe=0
          }
          {
                  if ($1 == Wcie || NR == 1)
                  {
                          Wcie=$1
                          Wsuivant=Wprecedent+1
          "ert.sh" 44 lines, 657 characters
          
          0
        2. Modérateur
          Salut,

          Concernant le "grep", essaie comme ça plutôt :
          grep "lawsoncompany[FI]" FILE  | sort -un -t: +1 > FILE1
          ;-))
          0
        3. @jipicyhmm...
          le probleme c'est que la converstion ne se passe pas comme il faut , car au lieu que j'ai ça :

          lawsoncompanyF: 2
          lawsoncompanyF: 4-5
          lawsoncompanyF: 7-9
          lawsoncompanyF: 12
          lawsoncompanyF: 15-18
          lawsoncompanyF: 4040
          lawsoncompanyF: 4050-4052
          lawsoncompanyF: 4060
          lawsoncompanyF: 4062
          lawsoncompanyF: 9930
          lawsoncompanyF: 9933
          lawsoncompanyF: 9935-9939
          lawsoncompanyF: 9942
          lawsoncompanyI: 2
          lawsoncompanyI: 15
          lawsoncompanyI: 311
          lawsoncompanyI: 1708
          lawsoncompanyI: 1996
          lawsoncompanyI: 1998-1999


          j'ai ça:

          lawsoncompanyF: 2
          lawsoncompanyF: 4-5
          lawsoncompanyF: 7-9
          lawsoncompanyF: 12
          lawsoncompanyF: 15-18
          lawsoncompanyI: 311
          lawsoncompanyI: 1708
          lawsoncompanyI: 1996
          lawsoncompanyI: 1998-1999
          lawsoncompanyF: 4031
          lawsoncompanyF: 4040
          lawsoncompanyF: 4050-4052
          lawsoncompanyF: 4060
          lawsoncompanyF: 4062
          lawsoncompanyF: 9930
          lawsoncompanyF: 9933
          lawsoncompanyF: 9935-9939
          lawsoncompanyF: 9942
          0
        4. Contributeur
          @jipicyje dirais sort -k 1,1 -k 2,2n
          trier selon le premier champ et le deuxième champ en numérique
          0