Bonjour à tous . Comme je l'ai déja traité ici , mon objectif est le suivant :

1 - me connecter à une base SQLite distante
2 - récupérer certaine valeurs
3 - envoyer ces valeurs dans le LDAP

Actuellement , les 2 premières étapes sont franchies et je planche actuellement sur l'utilisation du module Net::LDAP.

Afin de me familiariser avec , j'ai tenté de faire des listages etc etc et tout marche à merveille. Cependant , je n'arrive pas à écrire dans le LDAP.

Tout d'abord voici mon code :

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
42
43
44
45
46
#!/usr/bin/perl
 
use warnings;
use strict;
use Net::LDAP;
use DBI;
 
############# DB ################
 my $BaseDeDonnees = "astsqlite";
 my $NomHote       = "localhost";
 my $login         = "";
 my $MotDePass     = "";
#################################
 
############LDAP################
my $ldap = Net::LDAP->new("x",port =>389, version => 3) or die "$@";
my $mesg = $ldap->bind("x",password => "toto");
$mesg->code && die $mesg->error;
################################
 
my $dbh=DBI->connect( "dbi:SQLite2:dbname=$BaseDeDonnees;host=$NomHote;",,)
    or die "Connection impossible à la base de donnees $BaseDeDonnees !";
 
my @row;
 
my $sth = $dbh->prepare("SELECT callerid FROM usersip ");
$sth->execute();
  print "\n## Debut de la recuperation des utilisateurs Asterisk ##\n\n";
  while ( @row = $sth->fetchrow_array ) {
 
 
  $mesg = $ldap->add( "uid=@row,ou=asterisk,dc=x,dc=fr",
    attr => [
        uid           => '@row',
        cn            => '@row',
        objectClass   =>
            [ 'top', 'organizationalUnit', 'AsteriskSIPUser'],
 
    ]
  );
      print "@row\n";
 
 
        }
  print "\n## Fin de la recuperation ##\n";
$ldap->unbind;
Je vais éclaircir un peu mon code.

Via une interfance web , un admin crée des utilisateurs qui sont entrées dans une base sqlite. Ma mission est de récupéré le callerid de chaque utilisateurs ( de la forme Nom Prénom <n°detel> ) et de l'envoyer dans mon LDAP , dans une OU prédéfinie.

Cependant , je n'arrive pas à écrire dans mon LDAP ( mes credentials sont bons ) , mais je récupère bien les données SQLite. Donc je penche vers une erreur de syntaxe de ma part.

Avez vous des idées?

Best regard,