Re: large groups question

[email protected] (Natxo Asenjo) Wed, 6 Jan 2016 15:21:45 +0100
Newsgroups perl.ldap
Message-ID <CAHBEJzXGpji7nSiP8MmRe0zNP1KPMO8jFNAwEowDXHkNG50N9w@mail.gmail.com>
--001a11419974e8314f0528ab12fc
Content-Type: text/plain; charset=UTF-8

Hi Justin,

On Wed, Jan 6, 2016 at 1:28 PM, Justin Alcorn <[email protected]> wrote:

> Your issue is that your perl logic has only one loop, over the first
> group. You need to search and then start processing the groups with
> pop_entry.
>

thanks for the tip!

I have this now which seems to work properly:

my @members;
my $samaccount;
$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);
    while ( my $entry = $mesg->pop_entry() ) {
        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');
        }
        print "Group: $samaccount\n";
        for (@members) {
            print "$_\n";
        }
        print "=" x 72 . "\n";
    }

}

Thanks again, i have to look into the paging limits as well, as you
mentioned. Small steps.

-- 
regards,
natxo

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

PGRpdiBkaXI9Imx0ciI+SGkgSnVzdGluLDxicj48ZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJh
Ij48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIFdlZCwgSmFuIDYsIDIwMTYgYXQgMToy
OCBQTSwgSnVzdGluIEFsY29ybiA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpq
YmFsY29ybkBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5qYmFsY29ybkBnbWFpbC5jb208L2E+
Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5
bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIw
NCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij48cCBkaXI9Imx0ciI+WW91ciBpc3N1ZSBpcyB0
aGF0IHlvdXIgcGVybCBsb2dpYyBoYXMgb25seSBvbmUgbG9vcCwgb3ZlciB0aGUgZmlyc3QgZ3Jv
dXAuIFlvdSBuZWVkIHRvIHNlYXJjaCBhbmQgdGhlbiBzdGFydCBwcm9jZXNzaW5nIHRoZSBncm91
cHMgd2l0aCBwb3BfZW50cnkuPC9wPjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PnRo
YW5rcyBmb3IgdGhlIHRpcCE8YnI+PGJyPjwvZGl2PjxkaXY+SSBoYXZlIHRoaXMgbm93IHdoaWNo
IHNlZW1zIHRvIHdvcmsgcHJvcGVybHk6PGJyPjxicj5teSBAbWVtYmVyczs8YnI+bXkgJHNhbWFj
Y291bnQ7PGJyPiRtZXNnID0gJGxkYXBwcm9kLSZndDtzZWFyY2goPGJyPsKgwqDCoCBiYXNlwqDC
oCA9Jmd0OyAkcHJvZF9iYXNlLDxicj7CoMKgwqAgZmlsdGVyID0mZ3Q7ICZxdW90OyhvYmplY3Rj
bGFzcz1ncm91cCkmcXVvdDssPGJyPsKgwqDCoCBzY29wZcKgID0mZ3Q7ICYjMzk7c3ViJiMzOTss
PGJyPsKgwqDCoCBhdHRyc8KgID0mZ3Q7IFs8YnI+wqDCoMKgwqDCoMKgwqAgKCAkaW5kZXggJmd0
OyAwICkgPyAmcXVvdDttZW1iZXI7cmFuZ2U9JGluZGV4LSomcXVvdDsgOiAmIzM5O21lbWJlciYj
Mzk7LCAmIzM5O3NhbWFjY291bnRuYW1lJiMzOTssPGJyPsKgwqDCoCBdPGJyPik7PGJyPmlmICgg
JG1lc2ctJmd0O2NvZGUgPT0gTERBUF9TVUNDRVNTICkgezxicj48YnI+wqDCoMKgICNteSAkZW50
cnkgPSAkbWVzZy0mZ3Q7ZW50cnkoMCk7PGJyPsKgwqDCoCB3aGlsZSAoIG15ICRlbnRyeSA9ICRt
ZXNnLSZndDtwb3BfZW50cnkoKSApIHs8YnI+wqDCoMKgwqDCoMKgwqAgbXkgJGF0dHI7PGJyPjxi
cj7CoMKgwqDCoMKgwqDCoCAjIGxhcmdlIGdyb3VwPGJyPsKgwqDCoMKgwqDCoMKgIGlmICggKCRh
dHRyKSA9IGdyZXAoIC9ebWVtYmVyO3JhbmdlPS8sICRlbnRyeS0mZ3Q7YXR0cmlidXRlcyApICkg
ezxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHB1c2goIEBtZW1iZXJzLCAkZW50cnktJmd0O2dl
dF92YWx1ZSgkYXR0cikgKTs8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAkc2FtYWNjb3VudCA9
ICRlbnRyeS0mZ3Q7Z2V0X3ZhbHVlKCYjMzk7c2FtYWNjb3VudG5hbWUmIzM5Oyk7PGJyPjxicj7C
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICggJGF0dHIgPX4gL15tZW1iZXI7cmFuZ2U9XGQrLSgu
KikkLyApIHs8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICRpbmRleCA9ICQxOzxi
cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJGluZGV4KysgaWYgKCAkaW5kZXggbmUg
JiMzOTsqJiMzOTsgKTs8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9PGJyPsKgwqDCoMKgwqDC
oMKgIH08YnI+PGJyPsKgwqDCoMKgwqDCoMKgICMgc21hbGwgZ3JvdXA8YnI+wqDCoMKgwqDCoMKg
wqAgZWxzZSB7PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQG1lbWJlcnPCoMKgwqAgPSAkZW50
cnktJmd0O2dldF92YWx1ZSgmIzM5O21lbWJlciYjMzk7KTs8YnI+wqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCAkc2FtYWNjb3VudCA9ICRlbnRyeS0mZ3Q7Z2V0X3ZhbHVlKCYjMzk7c2FtYWNjb3VudG5h
bWUmIzM5Oyk7PGJyPsKgwqDCoMKgwqDCoMKgIH08YnI+wqDCoMKgwqDCoMKgwqAgcHJpbnQgJnF1
b3Q7R3JvdXA6ICRzYW1hY2NvdW50XG4mcXVvdDs7PGJyPsKgwqDCoMKgwqDCoMKgIGZvciAoQG1l
bWJlcnMpIHs8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludCAmcXVvdDskX1xuJnF1b3Q7
Ozxicj7CoMKgwqDCoMKgwqDCoCB9PGJyPsKgwqDCoMKgwqDCoMKgIHByaW50ICZxdW90Oz0mcXVv
dDsgeCA3MiAuICZxdW90O1xuJnF1b3Q7Ozxicj7CoMKgwqAgfTxicj48YnI+fTxicj48YnI+PC9k
aXY+PGRpdj5UaGFua3MgYWdhaW4sIGkgaGF2ZSB0byBsb29rIGludG8gdGhlIHBhZ2luZyBsaW1p
dHMgYXMgd2VsbCwgYXMgeW91IG1lbnRpb25lZC4gU21hbGwgc3RlcHMuPGJyPjxicj4tLSA8YnI+
PC9kaXY+PGRpdj5yZWdhcmRzLDxicj48L2Rpdj48ZGl2Pm5hdHhvIDxicj48L2Rpdj48L2Rpdj48
L2Rpdj48YnI+PC9kaXY+PC9kaXY+DQo=
--001a11419974e8314f0528ab12fc--