From: Joel H. <Joe...@Op...> - 2009-03-03 04:22:26
|
I'm trying to use SimplePagedResultsControl so I can pull some data out of Active Directory that has a Server-Limit set. I got most of my code from this guide http://www.novell.com/coolsolutions/tip/18274.html When I try and run it I get this dump: """ SimplePagedResultsControl(1.2.840.113556.1.4.319,True,(10, '')) Traceback (most recent call last): File "./test_ldap_brakeit.py", line 29, in ? msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 'objectclass=user', serverctrls=[lc]) File "/usr/lib64/python2.4/site-packages/ldap/ldapobject.py", line 468, in search_ext EncodeControlTuples(serverctrls), File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 93, in EncodeControlTuples result = [ File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 45, in getEncodedTuple return (self.controlType,self.criticality,self.encodeControlValue(self.controlValue)) File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 78, in encodeControlValue return _ldap.encode_page_control(size,cookie) ldap.ENCODING_ERROR """ Server is RHEL5.2 , not too sure about the Active Directory I think it is running on Windows Server 2003. Here is the code: #!/usr/bin/python # import ldap,ldap.async,pprint from ldap.controls import SimplePagedResultsControl server = 'xxxx.com' ldap_version = 3 base = 'dc=example,dc=com' binddn = '' bindpw = '' userbase = '' port = 3268 page_size = 10 l = ldap.open(server,port) l.protocol_version = ldap_version l.simple_bind_s(binddn, bindpw) ldap.set_option(ldap.OPT_REFERRALS, 0) lc = SimplePagedResultsControl( ldap.LDAP_CONTROL_PAGE_OID, True, (page_size,'') ) print lc msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 'objectclass=user', serverctrls=[lc]) pages = 0 while True: pages += 1 print "Getting page %d" % (pages,) rtype,rdata,rmsgid,serverctrls = l.result3(msgid) print "%d results" % len(rdata) pctrls = [ c for c in serverctrls if c.controlType == ldap.LDAP_CONTROL_PAGE_OID ] if pctrls: est, cookie = pctrls[0].controlValue if cookie: lc.controlValue = (page_size,cookie) msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 'objectclass=user', serverctrls=[lc]) else: break else: print "Warning: Server ignores RFC 2696 control" Joel Heenan ________________________________ Information contained in this communication (including any attachments) is confidential and may be privileged or subject to copyright. If you have received this communication in error you are not authorised to use the information in any way and Optiver requests that you notify the sender by return email, destroy all copies and delete the information from your system. Optiver does not represent, warrant or guarantee that this communication is free from computer viruses or other defects or that the integrity of this communication has been maintained. Any views expressed in this communication are those of the individual sender. Optiver does not accept liability for any loss or damage caused directly or indirectly by this communication or its use. Please consider the environment before printing this email. |