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 <vale...@gmail.com>
signature.asc
Description: This is a digitally signed message part