large groups question

[email protected] (Natxo Asenjo) Wed, 6 Jan 2016 08:55:36 +0100
Newsgroups perl.ldap
Message-ID <CAHBEJzUN2p9XoSotomc3_tUvvcoHremb2RiGscP61owuArMzLQ@mail.gmail.com>
--e89a8f234dd3f18b480528a5ad62
Content-Type: text/plain; charset=UTF-8

hi,

following the FAQ (
http://search.cpan.org/~marschap/perl-ldap-0.65/lib/Net/LDAP/FAQ.pod#How_do_I_search_for_all_members_of_a_large_group_in_AD
?)

I successfully retrieve all members of a large group, nice.

The example searchs only using scope 'base' and as base the group
distinguishedname.

If I change that to

base = "dc=domain,dc=tld",
scope = "sub",

it finds just one group:

my $mesg;
my @members;
my $samaccount;
my $index = 0;

while ( $index ne '*' ) {
    $mesg = $ldapprod->search(
        base   => $prod_base,
        filter => "(objectclass=group)",
        scope  => 'sub',
        attrs  => [ ( $index > 0 ) ? "member;range=$index-*" : 'member',
'samaccountname', ]
    );
    if ( $mesg->code == LDAP_SUCCESS ) {
        my $entry = $mesg->entry(0);
        my $attr;

        # large group:
        if ( ($attr) = grep( /^member;range=/, $entry->attributes ) ) {
            push( @members, $entry->get_value($attr) );
            $samaccount = $entry->get_value('samaccountname');

            if ( $attr =~ /^member;range=\d+-(.*)$/ ) {
                $index = $1;
                $index++ if ( $index ne '*' );
            }
        }

        # small group:
        else {
            @members = $entry->get_value('member');
            $samaccount = $entry->get_value('samaccountname');
            last;
        }
    }

    # failure
    else {
        last;
    }
}

if ( $mesg->code == LDAP_SUCCESS ) {
    for (@members) {
        print "$_\n";
    }
    print "Group: $samaccount\n";
}

I'm obviously doing something wrong. Do I need to get the groups
distinguishedname and then use the scope 'base' to look at membership of
all groups?

Thanks for your advice.


-- 
--
Groeten,
natxo

--e89a8f234dd3f18b480528a5ad62
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: base64

PGRpdiBkaXI9Imx0ciI+PGRpdj48ZGl2PjxkaXY+aGksPGJyPjxicj48L2Rpdj5mb2xsb3dpbmcg
dGhlIEZBUSAoPGEgaHJlZj0iaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bWFyc2NoYXAvcGVybC1s
ZGFwLTAuNjUvbGliL05ldC9MREFQL0ZBUS5wb2QjSG93X2RvX0lfc2VhcmNoX2Zvcl9hbGxfbWVt
YmVyc19vZl9hX2xhcmdlX2dyb3VwX2luX0FEIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3NlYXJj
aC5jcGFuLm9yZy9+bWFyc2NoYXAvcGVybC1sZGFwLTAuNjUvbGliL05ldC9MREFQL0ZBUS5wb2Qj
SG93X2RvX0lfc2VhcmNoX2Zvcl9hbGxfbWVtYmVyc19vZl9hX2xhcmdlX2dyb3VwX2luX0FEPC9h
Pj8pPGJyPjxicj48L2Rpdj5JIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZSBhbGwgbWVtYmVycyBvZiBh
IGxhcmdlIGdyb3VwLCBuaWNlLjxicj48YnI+PC9kaXY+PGRpdj5UaGUgZXhhbXBsZSBzZWFyY2hz
IG9ubHkgdXNpbmcgc2NvcGUgJiMzOTtiYXNlJiMzOTsgYW5kIGFzIGJhc2UgdGhlIGdyb3VwIGRp
c3Rpbmd1aXNoZWRuYW1lLjxicj48YnI+PC9kaXY+PGRpdj5JZiBJIGNoYW5nZSB0aGF0IHRvIDxi
cj48YnI+PC9kaXY+PGRpdj5iYXNlID0gJnF1b3Q7ZGM9ZG9tYWluLGRjPXRsZCZxdW90Oyw8YnI+
PC9kaXY+PGRpdj5zY29wZSA9ICZxdW90O3N1YiZxdW90Oyw8YnI+PGJyPjwvZGl2PjxkaXY+aXQg
ZmluZHMganVzdCBvbmUgZ3JvdXA6PGJyPjxicj5teSAkbWVzZzs8YnI+bXkgQG1lbWJlcnM7PGJy
Pm15ICRzYW1hY2NvdW50Ozxicj5teSAkaW5kZXggPSAwOzxicj48YnI+d2hpbGUgKCAkaW5kZXgg
bmUgJiMzOTsqJiMzOTsgKSB7PGJyPsKgwqDCoCAkbWVzZyA9ICRsZGFwcHJvZC0mZ3Q7c2VhcmNo
KDxicj7CoMKgwqDCoMKgwqDCoCBiYXNlwqDCoCA9Jmd0OyAkcHJvZF9iYXNlLDxicj7CoMKgwqDC
oMKgwqDCoCBmaWx0ZXIgPSZndDsgJnF1b3Q7KG9iamVjdGNsYXNzPWdyb3VwKSZxdW90Oyw8YnI+
wqDCoMKgwqDCoMKgwqAgc2NvcGXCoCA9Jmd0OyAmIzM5O3N1YiYjMzk7LDxicj7CoMKgwqDCoMKg
wqDCoCBhdHRyc8KgID0mZ3Q7IFsgKCAkaW5kZXggJmd0OyAwICkgPyAmcXVvdDttZW1iZXI7cmFu
Z2U9JGluZGV4LSomcXVvdDsgOiAmIzM5O21lbWJlciYjMzk7LCAmIzM5O3NhbWFjY291bnRuYW1l
JiMzOTssIF08YnI+wqDCoMKgICk7PGJyPsKgwqDCoCBpZiAoICRtZXNnLSZndDtjb2RlID09IExE
QVBfU1VDQ0VTUyApIHs8YnI+wqDCoMKgwqDCoMKgwqAgbXkgJGVudHJ5ID0gJG1lc2ctJmd0O2Vu
dHJ5KDApOzxicj7CoMKgwqDCoMKgwqDCoCBteSAkYXR0cjs8YnI+PGJyPsKgwqDCoMKgwqDCoMKg
ICMgbGFyZ2UgZ3JvdXA6PGJyPsKgwqDCoMKgwqDCoMKgIGlmICggKCRhdHRyKSA9IGdyZXAoIC9e
bWVtYmVyO3JhbmdlPS8sICRlbnRyeS0mZ3Q7YXR0cmlidXRlcyApICkgezxicj7CoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIHB1c2goIEBtZW1iZXJzLCAkZW50cnktJmd0O2dldF92YWx1ZSgkYXR0cikg
KTs8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAkc2FtYWNjb3VudCA9ICRlbnRyeS0mZ3Q7Z2V0
X3ZhbHVlKCYjMzk7c2FtYWNjb3VudG5hbWUmIzM5Oyk7PGJyPjxicj7CoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIGlmICggJGF0dHIgPX4gL15tZW1iZXI7cmFuZ2U9XGQrLSguKikkLyApIHs8YnI+wqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICRpbmRleCA9ICQxOzxicj7CoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgJGluZGV4KysgaWYgKCAkaW5kZXggbmUgJiMzOTsqJiMzOTsgKTs8
YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9PGJyPsKgwqDCoMKgwqDCoMKgIH08YnI+PGJyPsKg
wqDCoMKgwqDCoMKgICMgc21hbGwgZ3JvdXA6PGJyPsKgwqDCoMKgwqDCoMKgIGVsc2Ugezxicj7C
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEBtZW1iZXJzID0gJGVudHJ5LSZndDtnZXRfdmFsdWUoJiMz
OTttZW1iZXImIzM5Oyk7PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJHNhbWFjY291bnQgPSAk
ZW50cnktJmd0O2dldF92YWx1ZSgmIzM5O3NhbWFjY291bnRuYW1lJiMzOTspOzxicj7CoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIGxhc3Q7PGJyPsKgwqDCoMKgwqDCoMKgIH08YnI+wqDCoMKgIH08YnI+
PGJyPsKgwqDCoCAjIGZhaWx1cmU8YnI+wqDCoMKgIGVsc2Ugezxicj7CoMKgwqDCoMKgwqDCoCBs
YXN0Ozxicj7CoMKgwqAgfTxicj59PGJyPjxicj5pZiAoICRtZXNnLSZndDtjb2RlID09IExEQVBf
U1VDQ0VTUyApIHs8YnI+wqDCoMKgIGZvciAoQG1lbWJlcnMpIHs8YnI+wqDCoMKgwqDCoMKgwqAg
cHJpbnQgJnF1b3Q7JF9cbiZxdW90Ozs8YnI+wqDCoMKgIH08YnI+wqDCoMKgIHByaW50ICZxdW90
O0dyb3VwOiAkc2FtYWNjb3VudFxuJnF1b3Q7Ozxicj59PGJyPjxicj48L2Rpdj48ZGl2PkkmIzM5
O20gb2J2aW91c2x5IGRvaW5nIHNvbWV0aGluZyB3cm9uZy4gRG8gSSBuZWVkIHRvIGdldCB0aGUg
Z3JvdXBzIGRpc3Rpbmd1aXNoZWRuYW1lIGFuZCB0aGVuIHVzZSB0aGUgc2NvcGUgJiMzOTtiYXNl
JiMzOTsgdG8gbG9vayBhdCBtZW1iZXJzaGlwIG9mIGFsbCBncm91cHM/PGJyPjxicj48L2Rpdj48
ZGl2PlRoYW5rcyBmb3IgeW91ciBhZHZpY2UuPGJyIGNsZWFyPSJhbGwiPjwvZGl2PjxkaXY+PGRp
dj48ZGl2PjxkaXY+PGJyPjxicj4tLSA8YnI+PGRpdj4tLTxicj5Hcm9ldGVuLDxicj5uYXR4bzwv
ZGl2Pg0KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+DQo=
--e89a8f234dd3f18b480528a5ad62--