Bonjour,
J'ai le fichier students.ldif suivant :
dn: cn=Eric DURAND
cn: Eric DURAND
xmozillanickname: DURAND
mail: edurand@ent.priv
givenname: Eric
sn: DURAND
objectclass: top
objectclass: person
userPassword: 5f4eb6bbf2994ad2e259a4b8c932f9c8
dn: cn=Claude DUPONT
cn: Claude DUPONT
xmozillanickname: DUPONTC
mail: cdupont@ent.priv
givenname: Claude
sn: DUPONT
objectclass: top
objectclass: person
userPassword: b2a219a7ee0debaf86e9b94eb6b7edf9
etc.
J'ai commencé à coder un script pour modifier son contenu et le re-écrire au bon format dans un autre fichier (students_tmp.ldif) avant importation dans la base LDAP.
Aujourd'hui, je ne parviens pas à faire mes deux dernières modifs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #-------------------------------------------# #!/usr/bin/perl -w use Digest::MD5 qw(md5); use MIME::Base64 qw(encode_base64); use strict; my ($fichier, $mdp, $ligne, $attribut, $hashedPasswd); print "Entrez un nom de fichier : "; $fichier = <STDIN>; chomp($fichier); open(FIC, $fichier) || die "Problème à l\'ouverture : $!"; open(FILE,">students_tmp.ldif") || die ("Erreur de creation de students_tmp.ldif") ; while($ligne = <FIC>) { if($ligne =~ /userPassword:/) { ($attribut, $mdp) = split(/ /, $ligne); # MD5 hash my @md5 = split "",$mdp; my @res; for (my $i = 0 ; $i < 32 ; $i+=2) { my $c = (((hex $md5[$i]) << 4) % 255) | (hex $md5[$i+1]); $res[$i/2] = chr $c; } $hashedPasswd = "{MD5}".encode_base64(join "", @res); $ligne =~ s/$mdp/$hashedPasswd/; print FILE $ligne; } else { if($ligne !~ /^xmozillanickname/) { $ligne =~ s/givenname/givenName/; $ligne =~ s/objectclass/objectClass/; print FILE $ligne; } } } close FIC and close FILE; print "Terminé !!!\n"; #-------------------------------------------#
1) J'aimerais ajouter pour chaque ligne commençant par dn: cn l'expression ,ou=users,dc=ent,dc=priv
Ainsi, dn: cn=Eric DURAND deviendrait dn: cn=Eric DURAND,ou=users,dc=ent,dc=priv
2) j'aimerai insérer avant chaque ligne commençant par userPassword: la ligne suivante : objectClass: inetOrgPerson
Ainsi, j'obtiendrai le résultat suivant :
objectclass: person
objectClass: inetOrgPerson
userPassword: 5f4eb6bbf2994ad2e259a4b8c932f9c8
Merci bien pour vos contributions.
Partager