Files
klesia_ldap/test.pl
Thomas C 91b47f700c mise a jour du mot de passe - WIP (il faut verifier quil n'ait pas deja ete change)
mise a jour des attributs - WIP: gerer le cas ou l'attribut existe
2019-10-16 23:21:17 +02:00

57 lines
1.9 KiB
Perl

#/usr/bin/perl
# on abandonne python pour perl
# ce script est capable de rajouter l'attribut description avec une valeur issue
# d'un fichier csv passé en argument
use strict;
use Net::LDAP;
use Text::CSV;
my $ldapserver = "localhost";
my $binddn = "cn=manager,o=od";
my $bindpw = "123Soleil" ;
my $ldap = Net::LDAP->new( $ldapserver ) or die "$@" ;
my $mesg = $ldap->bind( $binddn,
password => $bindpw
);
$mesg->code and die $mesg->error; # check for errors
my $csv = Text::CSV->new({ sep_char => ';' }) ;
my $file = $ARGV[0] or die "Need to get CSV file on the command line\n" ;
open(my $data, '<', $file) or die "Could not open '$file' $!\n";
my @cols = @{$csv->getline ($data)};
foreach my $c (@cols){
print "columne: ". $c ."\t" ;
}
my $row = {} ;
$csv->bind_columns (\@{$row}{@cols});
while ($csv->getline ($data)) {
my $dn = $row->{dn} ;
# my $mesg = $ldap-> search(
# base=> $dn,
# scope=> "base",
# filter=> "(description=".$attr1.")") ;
# print $mesg->count() ;
# if ($mesg->count() != 0) { next ; }
my $idTechnique = $row->{idTechnique} ? $row->{idTechnique} : "xx" ;
my $question1 = $row->{question1} ? $row->{question1} : "xx" ;
my $question2 = $row->{question2} ? $row->{question2} : "xx" ;
my $question3 = $row->{question3} ? $row->{question3} : "_" ;
my $reponse1 = $row->{reponse1} ? $row->{reponse1} : "_" ;
my $reponse2 = $row->{reponse2} ? $row->{reponse2} : "_" ;
my $reponse3 = $row->{reponse3} ? $row->{reponse3} : "_" ;
my $siren = $row->{siren} ? $row->{siren} : "" ;
my $civilite = $row->{civilite} ? $row->{civilite} : "" ;
my $userPassword = $row->{userPassword} ;
my $userPassword = `slappasswd -n -s $userPassword` ;
print $dn."\t >>".$question3 ."<<\n";
my $mesg = $ldap-> modify( $dn,
changes=> [
replace => [ 'userPassword' => $userPassword ],
]
) ;
$mesg->code and warn $mesg->error; # check for errors
}