Parser un fichier txt (.csv base LDAP)

madavekia Messages postés 34 Statut Membre -  
madavekia Messages postés 34 Statut Membre -
Bonjour,

J'ai un fichier .ldif (utilisateurs) d'une ancienne base ldap , je voudrais supprimer une partie des attribues de chaque entité de ce fichier et en même temps les écrire dans un fichier au format .csv , à partir de ce dernier (.csv) je génère un nouveau fichier .ldif avec la commande .awk .

Le fichier est très volumineux et le faire à la main est pratiquement inconcevable, donc la nécessité d'automatiser la procédure est nécessaire. j'ai cherché des applications (open source) pour le faire, ou des scripts sur le net afin de m'en inspirer mais je patauge.

Merci d'avance.

6 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Peut être qu'avec un exemple concret AVANT => APRÈS nous serions plus à même de t'aider ;-\
    0
  2. madavekia Messages postés 34 Statut Membre
     
    mon fichier .ldif1: (AVANT)

    dn: uid=pperrot,ou=People,dc=xxxxxxx,dc=fr
    cn: pperrot
    sn: pperrot
    givenName: pperrot
    uid: pperrot
    uidNumber: 1003
    gidNumber: 513
    homeDirectory: /data/home/pperrot
    loginShell: /bin/bash
    gecos: System User
    structuralObjectClass: inetOrgPerson
    entryUUID: 9f25c6f4-cfd3-102c-872b-f54f04082e84
    creatorsName: cn=Manager,dc=xxxxxxx,dc=fr
    createTimestamp: 20080616093746Z
    sambaLogonTime: 0
    sambaLogoffTime: 2147483647
    sambaKickoffTime: 2147483647
    sambaPwdCanChange: 0
    sambaPwdMustChange: 2147483647
    displayName: System User
    sambaAcctFlags: [UX]
    sambaSID: S-1-5-21-1647326067-1975614102-959982912-3006
    sambaPrimaryGroupSID: S-1-5-21-1647326067-1975614102-959982912-513
    sambaLogonScript: pperrot.bat
    sambaProfilePath: '\\NETEZG8\profiles\pperrot
    sambaHomeDrive: H:
    sambaLMPassword: 9CB1B6105ACCADEF0A59CDA5244689BE
    sambaNTPassword: B100CA5D92E0D09F88BC37C810CE4532
    sambaPwdLastSet: 1213609092
    userPassword:: e1NTSEF9MHpXdGErbEhxUE91OFJFRlFEOUwwbHYzOHpOc05VOVg=
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    objectClass: sambaSamAccount
    objectClass: radiusprofile
    radiusAuthType: EAP
    radiusTunnelPrivateGroupId: 20
    radiusTunnelMediumType: IEEE-802
    radiusTunnelType: VLAN
    entryCSN: 20080625132710Z#000000#00#000000
    modifiersName: cn=Manager,dc=xxxxxxx,dc=fr
    modifyTimestamp: 20080625132710Z

    dn: uid=mbrun,ou=People,dc=xxxxxxx,dc=fr
    cn: mbrun
    sn: mbrun
    givenName: mbrun
    uid: mbrun
    uidNumber: 1004
    gidNumber: 513
    homeDirectory: /data/home/mbrun
    loginShell: /bin/bash
    gecos: System User
    structuralObjectClass: inetOrgPerson
    entryUUID: ec2761d4-cffa-102c-872c-f54f04082e84
    creatorsName: cn=Manager,dc=xxxxxxx,dc=fr
    createTimestamp: 20080616141906Z
    sambaLogonTime: 0
    sambaLogoffTime: 2147483647
    sambaKickoffTime: 2147483647
    sambaPwdCanChange: 0
    sambaPwdMustChange: 2147483647
    displayName: System User
    sambaAcctFlags: [UX]
    sambaSID: S-1-5-21-1647326067-1975614102-959982912-3008
    sambaPrimaryGroupSID: S-1-5-21-1647326067-1975614102-959982912-513
    sambaLogonScript: mbrun.bat
    sambaProfilePath: '\\NETEZG8\profiles\mbrun
    sambaHomeDrive: H:
    sambaLMPassword: 50D937CF1083828EAAD3B435B51404EE
    sambaNTPassword: 3CB8FED01D4E00FF83095D014169698C
    sambaPwdLastSet: 1213625950
    userPassword:: e1NTSEF9MmxKbS9IcE0xM2c2ODdlK3MvSWpIUDBHRWo5eFVrUnk=
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    objectClass: sambaSamAccount
    objectClass: radiusprofile
    radiusAuthType: EAP
    radiusTunnelMediumType: IEEE-802
    radiusTunnelType: VLAN
    radiusTunnelPrivateGroupId: 20
    entryCSN: 20110422082857Z#000000#00#000000
    modifiersName: cn=Manager,dc=xxxxxxx,dc=fr
    modifyTimestamp: 20110422082857Z
    ... (je n'ai pris que deux utilisateur en exemple)

    Le fichier .csv : (APRÈS)
    uid:cn:givenName:sn:sambaPwdLastSet:sambaLMPassword:sambaNTPassword:userPassword
    pperrot:pperrot:perrot:1213609092:9CB1B6105ACCADEF0A59CDA5244689BE:B100CA5D92E0D09$
    mbrun:mbrun:brun:1213625950:50D937CF1083828EAAD3B435B51404EE:3CB8FED01D4E00FF83095D0$

    Voila ...
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Le fichier .csv : (APRÈS)
      uid:cn:givenName:sn:sambaPwdLastSet:sambaLMPassword:sambaNTPassword:userPassword


      C'est les champs censés être récupérés ?

      Si oui, alors y'a un souci, parce que les 2 exemples qui suivent ne correspondent pas ?
      0
  3. Madavekia
     
    Peu importe.... , le format est bon je cherche à récupérer certains attributs de chaque entité et les avoir au format .csv comme dans l'exemple qui ne vise qu'à te donner une idée de format
    0
  4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    En partant d'un fichier comme celui donné en exemple.

    Le script sed :
    $ cat script.sed 
    #n
    /^cn/{
    :z
    N
    /sambaPwdLastSet:/! bz
    s/[^:][^ ]* //Mg;s/\n./\n/2;s/\n/:/g;s/\([^:]*:\)\([^:]*:\)\([^:]*:\)\([^:]*:\)\([^:]*\):\(.*\)/\1\2\3\6:\4\5/p
    }


    Je récupère les champs avec "egrep" (y compris les lignes vides entre chaque id différentes, elles me servent de séparateur/délimiteur pour sed) :
    $ egrep 'uid:|cn:|givenName:|sambaPwdLastSet:|sambaLMPassword:|sambaNTPassword:|^$' plop | sed -f script.sed 
    pperrot:pperrot:perrot:1213609092:9CB1B6105ACCADEF0A59CDA5244689BE:B100CA5D92E0D09F88BC37C810CE4532
    mbrun:mbrun:brun:1213625950:50D937CF1083828EAAD3B435B51404EE:3CB8FED01D4E00FF83095D014169698C
    
    $

    A adapter...

    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Madavekia
     
    Merci t'es un chef... Vais essayer tout ça et te tiens au courant, en attendant j'ai déjà fermé les fenêtres et lancer la procédure d'adoption d'un petit manchot
    0
  7. madavekia Messages postés 34 Statut Membre
     
    C'est bon ça marche !!! encore merci pour ton aide, une dernière chose si cela ne te dérange pas , serait il possible de commenter les lignes ci dessous ou de me les expliquer brièvement stp .....

    s/[^:][^ ]* //Mg;s/\n./\n/2;s/\n/:/g;s/\([^:]*:\)\([^:]*:\)\([^:]*:\)\([^:]*:\)\([^:]*\):\(.*\)/\1\2\3\6:\4\5/p
    0