使用perl脚本导出/导入LDAP数据

时间:2014-04-23 05:06:57

标签: perl openldap

我是openLDAP和perl的新手。我想从LDAP数据库导出/导入带/不带模式的LDAP数据。使用perl脚本可以做到这一点吗?如果是,请给我一个示例代码。 我想使用openLDAP和perl创建一个没有dns的新模式。如何做到这一点?

1 个答案:

答案 0 :(得分:2)

这是一个项目中的太多问题。请一次提出一个问题。

如何从Perl阅读Ldap:

use strict;
use warnings;
use Data::Dumper;
### for ldap  
use Convert::ASN1;  
use Net::LDAP;
use Net::LDAP::Util qw(ldap_error_name canonical_dn ldap_explode_dn ldap_error_text);
use Net::LDAP::LDIF;

my %parms (
  host => 'localhost',
  port => 389,
  binddn => 'your dn',
  passwd => 'password',
  base => "",
  filter => "(objectclass=*)",
  scope => "base",
  attrs => ['*'],

);
my $ldif = Net::LDAP::LDIF->new( "out.ldif", "w", onerror => 'die', wrap  => 0 );
my $ldap= Net::LDAP->new($parms{'host'}, port => $parms{'port'}); 
my $bind_result = $ldap->bind($parms{'binddn'},'password' => $parms{'passwd'},'version' => '3');
if($bind_result->is_error()) {
  die ('Unable to bind to ' . $parms{'host'} . ': '.$bind_result->error()); 
}
my @search_args = (
    'base'     => $parms{"base"},               
    'scope'    => $parms{'scope'},                             
    'filter'   => $parms{'filter'},
    'attrs'    => $parms{'attrs'},
    'deref'    => 'always',
);

my $msg = $ldap->search(@search_args);
if ($msg->is_error()) {
    die "ERROR: ".Dumper(\@search_args).", ".$msg->error."\n";  
}
while (my $entry = $msg->pop_entry()){
    my $cn = $entry->get_value("cn");
    print "cn: $cn\n";
}