Python LDAP脚本:实现指定成功输出次数后添加延迟
Python LDAP批量添加用户到组时实现间隔延迟的正确方法
你的核心需求是:批量添加用户到LDAP组的过程中,每成功添加700次就插入一段延迟。之前的实现错误在于用了组标识i或者错误的列表判断逻辑,根本没统计成功次数。
正确实现思路
- 初始化一个计数器,专门统计成功添加的次数(失败操作不计入)
- 每次成功执行添加操作后,计数器加1
- 当计数器达到设定阈值(比如700)时,执行延迟,然后重置计数器(确保每700次触发一次延迟)
修正后的完整代码
#!/usr/bin/env python # /usr/bin/python2.6 import time import ldap # 原代码可能遗漏了ldap模块导入,需补充 # 初始化成功计数器 success_count = 0 # 设定触发延迟的成功次数阈值 delay_threshold = 700 # 延迟时长(单位:秒) delay_seconds = 10 for i in inGroups: tdn = "cn=" + i + ",cn=groups,dc=apple,dc=com" addToGroup = [ (ldap.MOD_ADD, 'memberUid', userUID), ] try: lod.modify_s(tdn, addToGroup) print "added %s to group %s" % (userUID, i) # 成功添加后计数器加1 success_count += 1 # 判断是否达到延迟触发条件 if success_count >= delay_threshold: print "已成功添加%s次,开始延迟%s秒..." % (success_count, delay_seconds) time.sleep(delay_seconds) # 重置计数器,进入下一轮计数 success_count = 0 except ldap.LDAPError, e: print "Fatal Error." if type(e.message) == dict: for (k, v) in e.message.iteritems(): print "%s: %s\n" % (k, v) else: print "Error: %s\n" % e.message print addToGroup
之前的错误分析
if i>700:i是遍历的组标识(如组名),并非成功添加的次数,逻辑完全不匹配需求addToGroup.count(10):addToGroup是LDAP修改操作的列表,元素为(ldap.MOD_ADD, 'memberUid', userUID),不存在数值10,count(10)永远返回0,不可能触发延迟
内容的提问来源于stack exchange,提问作者Misrty vib
相关产品推荐
相关产品推荐

