轻松执行LDAP查询,结果超过1000个
ldap_paged_search的Python项目详细描述
摘要
ldap_paged_search是一个python库,可以使用更多 小于1000个结果,或将查询分解为更小的结果集以减少 服务器加载。
许多ldap服务器(如active directory)不会返回超过1000个 结果,除非使用分页请求。现有的Python LDAP库 支持分页,但需要一些不太直观的编码来执行。 这个库只是一个包装器,使分页搜索变得容易。
它的接口也比ldap库更容易执行查询 它包起来了。
要求
- 在Python2.8上测试
- 默认的python库包括ldap库
安装
通过PIP或简易安装
$ sudo pip install ldap_paged_search # If you prefer PIP $ sudo easy_install ldap_paged_search # If you prefer easy_install
手动安装
$ git clone https://github.com/neoCrimeLabs/python-ldap_paged_search.git
$ cd python-ldap_paged_search
$ sudo python setup.py install
用法
初始设置
fromldap_paged_searchimportLdapPagedSearch# Required valuesurl='ldap://your.ldap.server'username='username'# for anything but active directoryusername='domain\\user'# for active directorypassword='yourPassword'baseDN='dc=company,dc=com'searchFilter='(&(objectCategory=user))'# Optional valuesmaxPages=0# 0 = everythingmaxPages=10# Return first 10 pages onlyattributes=['*']# Return all fieldsattributes=['FieldName','AnotherField']# Return specific fields onlypageSize=1000# How many records per page# Usual max is 1000; check your LDAP server docs
定义回调方法
# Using a callback method to process results uses less memory on large queries# Not using a callback search() will return all results as a single listdefmyCallback(dn,record):printdn,record
使用“with”查询
# maxPages, pageSize, attributes, and callback are all OPTIONALwithLdapPagedSearch(url,username,password,maxPages=2,pageSize=2)asl:results=l.search(baseDN,searchFilter,attributes=attributes,callback=myCallback)
替代查询方法
# maxPages, pageSize, attributes, and callback are all OPTIONALl=LdapPagedSearch(url,username,password,maxPages=2,pageSize=2)results=l.search(baseDN,searchFilter,attributes=attributes,callback=myCallback)
结果格式
# If you don't set a callback, your results will be returned as follows[('DistinctName1',{'FieldName':['value1','value2'],'AnotherField':['value'],}),('DistinctName2',{'FieldName':['value1','value2'],'AnotherField':['value'],}),...]
使用条件
我写这个图书馆是为了我自己使用,但我意识到其他人可能会觉得它很有用 有很多论坛主题描述了这个问题。
不幸的是,我不能保证任何积极的支持,但我会尽我最大的努力 许可证。也就是说,我很乐意接受带有适当更改的push请求 向图书馆的普通读者致辞。
简单地说,用这个你自己承担风险。如果成功了,太好了!如果没有,我可能不会 能够帮助你。不过,如果你修好了什么,请把它推回去,我会 可能会接受。:-)
此外,如果您在包、工具或商业软件中使用此库,请 我知道,我会把它列在这里!