如何阅读Perl中的大量LDAP条目的?目的、Perl、LDAP

由网友(半弦月)分享简介:我已经有一个LDAP脚本,以便通过一个用于读取LDAP用户信息之一。我的问题是,我回来在Active Directory中的所有用户。这是行不通的,因为目前我们的广告有10万左右的用户导致脚本崩溃由于内存限制。I already have an LDAP script in order to read LDAP us...

我已经有一个LDAP脚本,以便通过一个用于读取LDAP用户信息之一。我的问题是,我回来在Active Directory中的所有用户。这是行不通的,因为目前我们的广告有10万左右的用户导致脚本崩溃由于内存限制。

I already have an LDAP script in order to read LDAP user information one by one. My problem is that I am returning all users found in Active Directory. This will not work because currently our AD has around 100,000 users causing the script to crash due to memory limitations.

我在想什么做的是试图通过用户的X数量批次,如果可能的话来处理用户,使用线程以处理一些用户可以并行的。唯一的事情是,我刚开始使用Perl,所以我想知道,如果有人可以给我如何做到这一点的总体思路。

What I was thinking of doing was to try to process users by batches of X amount of users and if possible, using threads in order to process some users in parallel. The only thing is that I have just started using Perl, so I was wondering if anyone could give me a general idea of how to do this.

推荐答案

如果你能得到执行的ldapsearch 在你的环境中工作(和它在* nix的工作和Windows,虽然语法往往是不同的),你可以尝试这样的:

If you can get the executable ldapsearch to work in your environment (and it does work in *nix and Windows, although the syntax is often different), you can try something like this:

my $LDAP_SEARCH = "ldapsearch -h $LDAP_SERVER -p $LDAP_PORT -b $BASE -D uid=$LDAP_USERNAME -w $LDAP_PASSWORD -LLL";
my @LDAP_FIELDS = qw(uid mail Manager telephoneNumber CostCenter NTLogin displayName);
open (LDAP, "-|:utf8", "$LDAP_SEARCH "$FILTER" " . join(" ", @LDAP_FIELDS));
while (<LDAP>) {
  # process each LDAP response
}

我用的是读取无记忆的问题近10万LDAP条目(尽管它仍然需要30分钟以上)。你需要定义 $ FILTER (或留空),当然所有的LDAP服务器/用户名/密码件。

I use that to read nearly 100K LDAP entries without memory problems (although it still takes 30 minutes or more). You'll need to define $FILTER (or leave it blank) and of course all the LDAP server/username/password pieces.

如果你想/需要做一个更纯粹的Perl版本,我有更好的运气的Net :: LDAP 而不是网:: LDAP ::前preSS ,特别是大型的查询。

If you want/need to do a more pure-Perl version, I've had better luck with Net::LDAP instead of Net::LDAP::Express, especially for large queries.

阅读全文

相关推荐

最新文章