Parser un fichier txt (.csv base LDAP)

Fermé
madavekia Messages postés 31 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 6 janvier 2015 - 5 sept. 2012 à 17:30
madavekia Messages postés 31 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 6 janvier 2015 - 28 sept. 2012 à 14:32
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.


A voir également:

6 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
5 sept. 2012 à 17:35
Salut,

Peut être qu'avec un exemple concret AVANT => APRÈS nous serions plus à même de t'aider ;-\
0
madavekia Messages postés 31 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 6 janvier 2015
5 sept. 2012 à 18:06
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
5 sept. 2012 à 18:46
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
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
5 sept. 2012 à 19:08
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
madavekia Messages postés 31 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 6 janvier 2015
28 sept. 2012 à 14:32
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