Client side result pagination in python-ldap
Posted on Tue 25 October 2011 in Python
Sometime I must fighting with monkeys-configured LDAP servers.
This time DIT does not support
RFC2696 (Paged Results for
LDAP query), the data tree contains over 90000 entries.
Thanks to ldap.resiter is possible to implement client side pagination
in ldap scripts.
These simple lines of code explain how to:
import ldap
import pprint
import ldap.resiter
import sys
ldap_uri = "ldap://my.ldap.server"
ldap_base = "dc=example,dc=com"
page_entry_num = 5
class MyLDAPObject(ldap.ldapobject.LDAPObject,ldap.resiter.ResultProcessor):
pass
ldapconn = MyLDAPObject(ldap_uri)
msg_id = ldapconn.search(ldap_base, ldap.SCOPE_SUBTREE, "(objectclass=*)")
i = 0
for res_type,result,res_msgid,res_controls in ldapconn.allresults(msg_id):
if i >= page_entry_num:
try:
raw_input('Press Enter for nex page or CTRL-C to interrupt:')
except KeyboardInterrupt:
ldapconn.abandon(msg_id)
print "..Bye."
sys.exit()
i = 0
for rdn, ldap_obj in result:
print "***********************"
print "RDN: " + rdn
print "***********************"
pprint.pprint(ldap_obj)
print "***********************"
print ""
i = i + 1