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.

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";
#-------------------------------------------#
Aujourd'hui, je ne parviens pas à faire mes deux dernières modifs :

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.