[Awk] aide script conversion ldif >> csv

Ce qui ne concerne ni le forum ni des problèmes
falke
Chu Ko Nu
Messages : 416
Inscription : ven. 02 mars 2012, 19:24
Localisation : Grenoble

[Awk] aide script conversion ldif >> csv

Message par falke »

bonjour,

j'ai trouvé ce tuto ici http://www.yolinux.com/TUTORIALS/LinuxT ... tml#SCRIPT

l'idée pour moi c'est de convertir une extraction ldap en un .csv

pb je ne connais pas awk

j'ai transposé ce script à ma situation et ça marche SAUF QUE je ne récupère que ce qui correspond à mon dernier enregistrement de mon fichier ldif.
1) que faudrait-il modifier pour les avoir tous ?..

2) Autre problème : j'ai un attribut qui peut être multivalué, et dans de cas ce scripts awk ne garde que la dernière ligne de cet attribut multivalué. J'ai contourné en modifiant le pgm et également
dans le ldif en créant autant de variables que de nombre possible de valeur pour cet argument multivalué (oui je sais c'est moche ..)

exple avant extraction ldif:

Attribut_multivalué : valeur1
Attribut_multivalué : valeur2

après modif du ldif

Attribut_multivalué1 : valeur1
Attribut_multivalué2 : valeur2

et création des variables Attribut_multivalué1 et Attribut_multivalué1 dans mon prog

Code : Tout sélectionner

    # File: ldif2csv-StoogesDumpAll.awk
    # Create csv dump for whole database
    #
    BEGIN {
            last       = ""
            first      = ""
            name       = ""
            address    = ""
            loc        = ""
            state      = ""
            postalcode = ""
            homephone  = ""
            telephonenumber = ""
            mail       = ""
            mobile     = ""
            printf(" last,first,full name,address1,address2,city,state,postalcode,home#,work#,e-mail,phone3\n");
    }
    /^sn: /              {last=$2}
    /^givenName: /       {first=$2}
    /^cn: /              {name=$2}
    /^street: /          {address=$2}
    /^l: /               {loc=$2}
    /^st: /              {state=$2}
    /^postalCode: /      {postalcode=$2}
    /^homePhone: /       {homephone=$2}
    /^telephoneNumber: / {telephonenumber=$2}
    /^mail: /            {mail=$2}
    /^mobile: /          {mobile=$2}
    /^dn/ {
            if(last != "" && first != "" && last != "StoogeAdmin") printf("%s,%s,%s,%s,,%s,%s,%s,%s,%s,%s,%s\n",last,first,name,address,loc,state,postalcode,homephone,telephonenumber,mail,mobile)
            last       = ""
            first      = ""
            name       = ""
            address    = ""
            loc        = ""
            state      = ""
            postalcode = ""
            homephone  = ""
            telephonenumber = ""
            mail       = ""
            mobile     = ""
    }
    # Capture last dn
    END {
            if(last != "" && first != "" && last != "StoogeAdmin") printf("%s,%s,%s,%s,,%s,%s,%s,%s,%s,%s,%s\n",last,first,name,address,loc,state,postalcode,homephone,telephonenumber,mail,mobile)
    }

CSV to LDAP LDIF format:
merci pour votre aide
Répondre