Hi there, Im trying to get a list of available entries from ldap by simple filter: attribute cn must be less than 1000 and greater than 500. According to Net::LDAP documentation this could be done like this:
001: #!/usr/bin/env perl
002:
003:
004: use strict;
005: use warnings;
006:
007: use Net::LDAP;
008:
009: my $ldap = Net::LDAP->new('192.168.9.111');
010: my $mesg = $ldap->bind('cn=root,dc=lomonosov,dc=parallel,dc=ru',
password => 'rootpw');
011:
012: $|=1;
013:
014: print "Searching for uids less than 1000 and gt 500... ";
015:
016: $mesg =
017: $ldap->search(
018: base => "ou=slurm,dc=lomonosov,dc=parallel,dc=ru",
019: filter => "&(cn<=1000)(cn>=500)"
020: );
021:
022: $mesg->code && die $mesg->error;
023:
024: print "Ok\nFound: ";
025:
026: print join ", ", map $_->get_value("cn"), $mesg->entries;
But it produces:
001: Searching for uids less than 1000 and gt 500... Ok
002: Found:
I know that there is a two hundred or so entries in ldap for this
request,
001: fisher% ldapsearch -h 192.168.9.111 -D
"cn=root,dc=lomonosov,dc=parallel,dc=ru" -w "rootpw" -b
"ou=slurm,dc=lomonosov,dc=parallel,dc=ru" "&(cn>600)(cn<1000)" |tail -3
002:
003: # numResponses: 145
004: # numEntries: 144
In fact, the problem experienced on a simple filters with 'less than' or
'greater than' comparisions; complex search filters like
'|(cn=527)(cn=528)' works just fine. What am I doing wrong? How can I
get a list of entries with said filter?
--
Serge A. Ribalchenko <[email protected]>
signature.asc
Description: This is a digitally signed message part
