用python解决ldap的Size limit exceeded问题!
来源:互联网 发布:鸣人的妈妈知乎 编辑:程序博客网 时间:2024/05/09 07:56
本人工作中用到ldap进行用户的管理等,我的主编程语言是python,所以用python对ldap进行操作,在私有云部分因为客户的ldap需求不一样,所以会产生一些问题,特此记录一下.
ldap其他问题暂且不谈,先说下解决 ”Size limit exceeded“ 的问题。
产生”Size limit exceeded“ 问题的原因就是客户端去ldap服务端查询,客户端想一次把查询到的多个数据返回,结果服务器不让,就产生了这个问题,解决办法有两个:
一、在ldap服务器上把一次可返回的数据的总量调大。
1、ldap一般运行在windows上,linux系统先不说,在windows上单击开始菜单,搜到Ntdsutil.exe程序后点击运行
2、输入:ldap policies, 然后enter
3、输入:connections, 然后enter
4、输入:connect to domain xxxxx.com, 然后enter(xxxxx.com是AD上绑定的域名)
5、输入:q,然后enter
6、输入:show values,然后enter(查看MaxPageSize)
7、输入:set MaxPageSize to 2000,然后enter
8、输入:commit changes,然后enter
然后重复第6步查看结果,无误后可键入quit退出。
第一种方法需要服务端做修改,但对于一些金融证券类的公司可能不行,因为他们认为这个风险不可控,值要设置多大才为最好?所以第二种方法需要修改客户端代码。
二、修改python代码,分页获取ldap服务器返回的信息,当时百度谷歌了很久,又遇到过'module' object has no attribute 'LDAP_CONTROL_PAGE_OID'的问题,现在终于搞定了,此方法不用管ldap的版本信息。
代码所用python版本: 2.7.6
import ldapfrom ldap.controls import SimplePagedResultsControll = ldap.initialize('ldap://域名或ip')l.simple_bind_s('ldap用户', 'ldap用户密码')PAGE_SIZE = 500 #设置每页返回的条数ATTRLIST = ['cn', 'displayName', 'name', 'telephoneNumber', 'objectClass', 'sAMAccountName'] #设置返回的属性值pg_ctrl = SimplePagedResultsControl(True, size=PAGE_SIZE, cookie="")userdata = []while True: msgid = l.search_ext('OU=xxx,OU=xxx,DC=xxx,DC=com', ldap.SCOPE_ONELEVEL, "(objectClass=user)", ATTRLIST, serverctrls=[pg_ctrl]) _a, res_data, _b, srv_ctrls = l.result3(msgid) print 'res_data', len(res_data) userdata.extend(res_data) cookie = srv_ctrls[0].cookie if cookie: pg_ctrl.cookie = cookie else: breakprint 'totalnum:', len(userdata)
代码要点为怎么用cookie值,代码中pg_ctrl的方法有:
其中size为每页返回的数据数量,可控,其他参数不做说明.
有问题欢迎指正.
- 用python解决ldap的Size limit exceeded问题!
- “File Size Limit Exceeded”问题
- "File size limit exceeded" 问题
- 解决Linux中在创建大于4g文件时遇到的File Size Limit Exceeded问题
- (转)File size limit exceeded
- Eclipse抛出GC overhead limit exceeded异常问题的分析与解决
- Eclipse抛出GC overhead limit exceeded异常问题的分析与解决
- File size limit exceeded (core dump)
- 遭遇File size limit exceeded错误
- 在MAC下解决MAC unable to execute sex :GC overhead limit exceeded GC overhead的问题
- Uncaught RangeError: Maximum call stack size exceeded的问题
- (笔记)File size limit exceeded (core dumped)解决方法
- *** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
- *** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
- *** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
- spark-OutOfMemory:GC overhead limit exceeded 解决
- java.lang.OutOfMemoryError: GC overhead limit exceeded 问题分析和解决
- java.lang.OutOfMemoryError: GC overhead limit exceeded 问题分析和解决
- Maven私服Nexus配置教程
- HDOJ 2033 人见人爱A+B
- 使用ssh正向连接、反向连接、做socks proxy的方法
- HTTP POST GET 本质区别详解
- 二进制漏洞挖掘技术实战
- 用python解决ldap的Size limit exceeded问题!
- Zend Studio 使用 Xdebug 断点调试
- VS2010关于error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Solr 搭建搜索服务器
- Leetcode 126. Word Ladder II
- NodeJS自学笔记
- 静态代码检查工具的使用(cppcheck)
- Linux下date和timestamp互转
- SQL server存储过程语法及实例