python 访问LDAP服务器「建议收藏」

python 访问LDAP服务器「建议收藏」最近在做confluence数据迁移和升级。由于公司是使用LDAP认证登录的,在安装升级之后发现confluence自动从LDAP把全部用户名自动全部导入到了用户表(cwd_users)。可能是为了细化权限控制。但这样就问题就来了,全部用户名又没有按部门进行区分,在细分权限时也不好控制。没办法,只好写个简单的python脚本从LDAP服务器重新取一次,把用户按部门分类,好在后面做细分权限时控

大家好,又见面了,我是你们的朋友全栈君。

最近在做confluence数据迁移和升级。由于公司是使用LDAP认证登录的,在安装升级之后发现confluence自动从LDAP把全部用户名自动全部导入到了用户表(cwd_users)。可能是为了细化权限控制。但这样就问题就来了,全部用户名又没有按部门进行区分,在细分权限时也不好控制。

没办法,只好写个简单的python脚本从LDAP 服务器重新取一次,把用户按部门分类,好在后面做细分权限时控制。

需要用到ldap模块,下载地址:
http://www.python-ldap.org/

程序如下:

# -*- coding: GBK -*-
'''
Created on 2012-12-7

@author: herong
'''
import ldap

dn = "cn=ldapname,OU=APPuser,dc=xxxx,dc=com,dc=cn"
pw = "ldappw"
department = {"-1":"中心",
              "000060100":"开发一部",
              "000060200":"开发二部",
              "000060300":"开发三部",
              "000060400":"开发四部",}

conn = ldap.initialize('ldap://192.168.1.111')
print conn
conn.simple_bind(dn, pw)
base_dn = 'OU=000000001,OU=000000000,dc=xxxx,dc=com,dc=cn'
filter = "(objectClass=user)"
attrs = ['cn']

for depa in department:
    base_dn_tmp = base_dn
    if depa != "-1":      
        base_dn_tmp = "OU="+depa+","+base_dn_tmp
        print base_dn_tmp
    rs = conn.search_s(base_dn_tmp, ldap.SCOPE_ONELEVEL, filter, attrs)
    print "部门:%s,人数:%s"%(department[depa],len(rs))
    for user in rs:
        print user[1]['cn'][0]
    print "#"*40
conn.unbind()
if __name__ == '__main__':
    pass
 
说明:
conn.search_s(basedn,scope, filter,attrs) 函数参数说明:
basedn:表示从目录信息树中哪个目录开始查找
scope:表示查找深度
filter:表示必须满足的条目
attrs:表示要返回的属性,* 表示所有属性都返回

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146451.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最短路径Dijkstra算法原理及Matlab实现「建议收藏」

    最短路径Dijkstra算法原理及Matlab实现「建议收藏」图论的基础知识不再阐述。最短路径算法主要有二Dijkstra算法Floyd算法Dijkstra算法研究的是从初始点到其他每一结点的最短路径而Floyd算法研究的是任意两结点之间的最短路径以下图为例,首先介绍Dijstra的原理红字为各结点的编号,蓝字为各结点之间的距离首先定义几个变量结点个数n;二维矩阵M(nxn),距离矩阵,连通的结点间即为距离,不…

    2022年6月1日
    68
  • setscale方法的用法_【java】BigDecimal.setScale用法总结

    setscale方法的用法_【java】BigDecimal.setScale用法总结====================写法========================1.BigDecimalnum1=newBigDecimal(2.225667);//这种写法不允许,会造成精度损失2.BigDecimalnum2=newBigDecimal(2);//这种写法是可以的3.BigDecimalnum=newBigDecimal(“2.225667″…

    2022年10月20日
    3
  • java中接口的定义与实现

    java中接口的定义与实现

    2021年12月6日
    40
  • spring cloud 入门系列一:初识spring cloud

    最近看到微服务很火,也是未来的趋势,所以就去学习下,在dubbo和springcloud之间我选择了从springcloud,主要有如下几种原因:好,接下来我们来认识下springcloud

    2022年2月16日
    42
  • 经典vbs代码收集「建议收藏」

    经典vbs代码收集「建议收藏」经典vbs代码收集2011年01月17日  经典的vbs代码,收集起来也为了以后学习。  VBS脚本用途很多:  1.计算  2.处理文件和文件夹  3.管理Windows  4.处理Word,Excel,PowerPoint等Office文档  5.嵌入网页,驱动dHTML  6.编写HTTP通信  7.调用系统功能…

    2022年5月18日
    61
  • 2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)

    2020最全JVM垃圾回收机制面试题整理,阿里面试官最爱问的都在这里了(附答案)前言为什么需要垃圾回收首先我们来聊聊为什么会需要垃圾回收,假设我们不进行垃圾回收会造成什么后果,我们举一个简单的例子我们住在一个房子里面,我们每天都在里面生活,然后垃圾都丢在房子里面,又不打扫,最后房子都是垃圾我们是不是就没法住下去了。所以JVM垃圾回收机制也是一样的,当我们创建的对象占据堆空间要满了的的时候我们就对他进行垃圾回收,注意java的垃圾回收是不定时的,c语言的是需要去调用垃圾回收方法刚刚也说到上面举的例子也说到假设一个房子都被垃圾堆满了那么我们没法住人了那么我们是不是会告

    2022年5月25日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号