mise au point doc et support multi branche
This commit is contained in:
BIN
.add_attribute.pl.swp
Normal file
BIN
.add_attribute.pl.swp
Normal file
Binary file not shown.
BIN
.doc.md.swp
Normal file
BIN
.doc.md.swp
Normal file
Binary file not shown.
@@ -8,6 +8,9 @@ my $ldapserver = "localhost";
|
|||||||
my $binddn = "cn=manager,o=od";
|
my $binddn = "cn=manager,o=od";
|
||||||
my $bindpw = "123Soleil" ;
|
my $bindpw = "123Soleil" ;
|
||||||
|
|
||||||
|
my $isPeople=0 ;
|
||||||
|
my $isEnt=0;
|
||||||
|
|
||||||
my $ldap = Net::LDAP->new( $ldapserver ) or die "$@" ;
|
my $ldap = Net::LDAP->new( $ldapserver ) or die "$@" ;
|
||||||
|
|
||||||
my $mesg = $ldap->bind( $binddn,
|
my $mesg = $ldap->bind( $binddn,
|
||||||
@@ -18,17 +21,21 @@ $mesg->code and die $mesg->error; # check for errors
|
|||||||
my $csv = Text::CSV->new({ sep_char => ';' }) ;
|
my $csv = Text::CSV->new({ sep_char => ';' }) ;
|
||||||
my $file = $ARGV[0] or die "Need to get CSV file on the command line\n" ;
|
my $file = $ARGV[0] or die "Need to get CSV file on the command line\n" ;
|
||||||
|
|
||||||
|
if( $file =~ /entreprise/i ) {
|
||||||
|
$isEnt=1 ;
|
||||||
|
}elsif( $file =~ /particulier/i ) {
|
||||||
|
$isPeople=1 ;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
die "Unknown branch\n" ;
|
||||||
|
}
|
||||||
open(my $data, '<', $file) or die "Could not open '$file' $!\n";
|
open(my $data, '<', $file) or die "Could not open '$file' $!\n";
|
||||||
my @cols = @{$csv->getline ($data)};
|
my @cols = @{$csv->getline ($data)};
|
||||||
foreach my $c (@cols){
|
|
||||||
print "column: ". $c ."\t" ;
|
|
||||||
}
|
|
||||||
print "\n" ;
|
|
||||||
my $row = {} ;
|
my $row = {} ;
|
||||||
$csv->bind_columns (\@{$row}{@cols});
|
$csv->bind_columns (\@{$row}{@cols});
|
||||||
while ($csv->getline ($data)) {
|
while ($csv->getline ($data)) {
|
||||||
my $dn = $row->{dn} ;
|
my $dn = $row->{dn} ;
|
||||||
if ( $dn =~ /^dn / ) { next ; }
|
if ( $dn =~ /^dn / ) { next ; }
|
||||||
my $idTechnique = $row->{idTechnique} ? $row->{idTechnique} : "UNDEFINED" ;
|
my $idTechnique = $row->{idTechnique} ? $row->{idTechnique} : "UNDEFINED" ;
|
||||||
my $question1 = $row->{question1} ? $row->{question1} : "UNDEFINED" ;
|
my $question1 = $row->{question1} ? $row->{question1} : "UNDEFINED" ;
|
||||||
my $question2 = $row->{question2} ? $row->{question2} : "UNDEFINED" ;
|
my $question2 = $row->{question2} ? $row->{question2} : "UNDEFINED" ;
|
||||||
@@ -38,6 +45,8 @@ while ($csv->getline ($data)) {
|
|||||||
my $reponse3 = $row->{reponse3} ? $row->{reponse3} : "UNDEFINED" ;
|
my $reponse3 = $row->{reponse3} ? $row->{reponse3} : "UNDEFINED" ;
|
||||||
my $siren = $row->{siren} ? $row->{siren} : "UNDEFINED" ;
|
my $siren = $row->{siren} ? $row->{siren} : "UNDEFINED" ;
|
||||||
my $civilite = $row->{civilite} ? $row->{civilite} : "UNDEFINED" ;
|
my $civilite = $row->{civilite} ? $row->{civilite} : "UNDEFINED" ;
|
||||||
|
my $phoneNumber = $row->{phoneNumber} ? $row->{phoneNumber} : "UNDEFINED" ;
|
||||||
|
my $birthDate = $row->{birthDate} ? $row->{birthDate} : "UNDEFINED" ;
|
||||||
my $userPassword = $row->{userPassword} ;
|
my $userPassword = $row->{userPassword} ;
|
||||||
my $userPassword = `slappasswd -n -s $userPassword` ;
|
my $userPassword = `slappasswd -n -s $userPassword` ;
|
||||||
|
|
||||||
@@ -52,21 +61,43 @@ while ($csv->getline ($data)) {
|
|||||||
add => {
|
add => {
|
||||||
objectClass => 'klesiaentreprise',
|
objectClass => 'klesiaentreprise',
|
||||||
});
|
});
|
||||||
}else{
|
}
|
||||||
warn $dn . " already of type klesia\n" ;
|
|
||||||
my $mesg = $ldap-> modify( $dn,
|
# add common attributes
|
||||||
|
my $mesg = $ldap-> modify( $dn,
|
||||||
changes=> [
|
changes=> [
|
||||||
replace => [ 'idTechnique' => $idTechnique ],
|
replace => [ 'idTechnique' => $idTechnique ],
|
||||||
replace => [ 'question1' => $question1 ],
|
replace => [ 'question1' => $question1 ],
|
||||||
replace => [ 'question2' => $question2 ],
|
replace => [ 'question2' => $question2 ],
|
||||||
replace => [ 'question3' => $question3 ],
|
replace => [ 'question3' => $question3 ],
|
||||||
replace => [ 'reponse1' => $reponse1 ],
|
replace => [ 'reponse1' => $reponse1 ],
|
||||||
replace => [ 'reponse2' => $reponse2 ],
|
replace => [ 'reponse2' => $reponse2 ],
|
||||||
replace => [ 'reponse3' => $reponse3 ],
|
replace => [ 'reponse3' => $reponse3 ],
|
||||||
|
replace => [ 'civilite' => $civilite],
|
||||||
|
replace => [ 'userPassword' => $userPassword ],
|
||||||
|
]
|
||||||
|
) ;
|
||||||
|
$mesg->code and warn $dn."\t".$mesg->error;
|
||||||
|
|
||||||
|
# add entreprise specific attributes
|
||||||
|
if( $isEnt ){
|
||||||
|
my $mesg = $ldap-> modify( $dn,
|
||||||
|
changes=> [
|
||||||
replace => [ 'siren' => $siren],
|
replace => [ 'siren' => $siren],
|
||||||
replace => [ 'civilite' => $civilite],
|
|
||||||
replace => [ 'userPassword' => $userPassword ],
|
|
||||||
]
|
]
|
||||||
) ;
|
) ;
|
||||||
$mesg->code and warn $dn."\t".$mesg->error; }
|
$mesg->code and warn $dn."\t".$mesg->error;
|
||||||
}
|
}
|
||||||
|
# add people specific attributes
|
||||||
|
if( $isPeople ){
|
||||||
|
my $mesg = $ldap-> modify( $dn,
|
||||||
|
changes=> [
|
||||||
|
replace => [ 'birthDate' => $birthDate],
|
||||||
|
replace => [ 'phoneNumber' => $phoneNumber],
|
||||||
|
]
|
||||||
|
) ;
|
||||||
|
$mesg->code and warn $dn."\t".$mesg->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
23
doc.md
23
doc.md
@@ -1,14 +1,18 @@
|
|||||||
##### Documentation
|
##### Documentation
|
||||||
|
|
||||||
|
#### Prérequis
|
||||||
|
|
||||||
|
les scripts mis au point nécessite un interpréteur perl et les blibiothèques
|
||||||
|
Net::LDAP ( paquet perl-LDAP sur RHEL / CentOS ) et Text::CSV ( paquet
|
||||||
|
perl-Text-CSV )
|
||||||
|
|
||||||
#### Définition des nouveaux attributs
|
#### Définition des nouveaux attributs
|
||||||
|
|
||||||
Avant de pouvoir ajouter les nouveaux attributs aux objets ldap existants, il
|
Avant de pouvoir ajouter les nouveaux attributs aux objets ldap existants, il
|
||||||
faut rajouter leur définition auprès du serveur LDAP.
|
faut rajouter leur définition auprès du serveur LDAP.
|
||||||
|
|
||||||
Cela se fait en injectant le fichier **klesia_entreprise_schema.ldif** via la
|
Il faut copier le fichier dans le sous -répertoire schema du répertoire
|
||||||
commande:
|
d'installation ldap et relancer le service
|
||||||
```bash
|
|
||||||
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f klesia_entreprise_schema.ldif
|
|
||||||
|
|
||||||
Il faut ensuite rajouter l'attribut objectClass avec la valeur klesiaentreprise
|
Il faut ensuite rajouter l'attribut objectClass avec la valeur klesiaentreprise
|
||||||
à tous les objets à qui on souhaite ajouter les attributs.
|
à tous les objets à qui on souhaite ajouter les attributs.
|
||||||
@@ -19,6 +23,9 @@ Il faut ensuite rajouter l'attribut objectClass avec la valeur klesiaentreprise
|
|||||||
Ce script est responsable de l'ajout de la classe d'objet décrit ci-dessus d'une
|
Ce script est responsable de l'ajout de la classe d'objet décrit ci-dessus d'une
|
||||||
part, et de l'ajout des attributs supplémentaires d'autre part.
|
part, et de l'ajout des attributs supplémentaires d'autre part.
|
||||||
|
|
||||||
|
À noter les paramètres de connexion et d'authentification en début de fichier. (
|
||||||
|
$ldapserver, $binddn et $bindpw).
|
||||||
|
|
||||||
Il attend en entrée un fichier csv ayant la structure suivante:
|
Il attend en entrée un fichier csv ayant la structure suivante:
|
||||||
dn de l'entrée à modifier
|
dn de l'entrée à modifier
|
||||||
nom attribut 1
|
nom attribut 1
|
||||||
@@ -29,13 +36,16 @@ valeur attribut n
|
|||||||
|
|
||||||
Chaque champ étant séparé par un ;
|
Chaque champ étant séparé par un ;
|
||||||
|
|
||||||
|
|
||||||
Pour chaque ligne du fichier csv:
|
Pour chaque ligne du fichier csv:
|
||||||
- vérification de la présence de l'attribut objectClass=klesiaEntreprise
|
- vérification de la présence de l'attribut objectClass=klesiaEntreprise
|
||||||
- rajout de cet attribut le cas échéant.
|
- rajout de cet attribut le cas échéant.
|
||||||
- pour chaque attribut:
|
- pour chaque attribut:
|
||||||
- mise à jour de l'attribut avec la valeur correspondante
|
- mise à jour de l'attribut avec la valeur correspondante
|
||||||
|
|
||||||
|
Ex d'utilisation
|
||||||
|
```
|
||||||
|
perl add_attribute.pl entreprises.csv
|
||||||
|
```
|
||||||
|
|
||||||
#### Script 2 : password.pl
|
#### Script 2 : password.pl
|
||||||
|
|
||||||
@@ -44,6 +54,9 @@ attribut **userPassword** non déjà hashé.
|
|||||||
|
|
||||||
Il prend en entrée le dn de la branche à modifier.
|
Il prend en entrée le dn de la branche à modifier.
|
||||||
|
|
||||||
|
À noter les paramètres de connexion et d'authentification en début de fichier. (
|
||||||
|
$ldapserver, $binddn et $bindpw).
|
||||||
|
|
||||||
Ex d'utilisation:
|
Ex d'utilisation:
|
||||||
```
|
```
|
||||||
perl password.pl ou=PeopleEnt,o=od
|
perl password.pl ou=PeopleEnt,o=od
|
||||||
|
|||||||
Reference in New Issue
Block a user