【发布时间】:2014-04-23 05:06:56
【问题描述】:
我是 openLDAP 和 perl 的新手。我想从 LDAP 数据库导出/导入带有/不带有模式的 LDAP 数据。使用 perl 脚本可以做到这一点吗?如果是,请给我一个示例代码。 我想在没有 dns 的情况下使用 openLDAP 和 perl 创建一个新架构。如何做到这一点?
【问题讨论】:
我是 openLDAP 和 perl 的新手。我想从 LDAP 数据库导出/导入带有/不带有模式的 LDAP 数据。使用 perl 脚本可以做到这一点吗?如果是,请给我一个示例代码。 我想在没有 dns 的情况下使用 openLDAP 和 perl 创建一个新架构。如何做到这一点?
【问题讨论】:
这一项问题太多了。请一次问一个问题。
如何从 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";
}
【讨论】: