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:表示要返回的属性,* 表示所有属性都返回

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 介绍篇 决策引擎环节

    介绍篇 决策引擎环节决策引擎概念简述在我理解上决策引擎类似是一个管道、运输系统,连通整个风控流程,所有的规则和评分卡以及流程都覆盖其中,分配到每一个环节(比如人工),将结果返回给决策引擎,走入下一个流程决策引擎的使用规则决策引擎的分流效果评分卡是内置在决策引擎当中,基于评分卡的分段,评分卡的使用具体参见:评分卡在策略中的使用,进行分流,分流决策的目的是为让好客户以及有借款欲望客户进一步走入下一流程决策引擎…

  • 实验十(课程资源)-DNS服务器配置与管理[通俗易懂]

    实验十(课程资源)-DNS服务器配置与管理[通俗易懂]课程实验报告:一、实验目的:1、了解DNS工作原理及域名解析过程2、掌握DNS服务器的安装、配置与管理二、实验目的:在windows2003上搭建DNS服务器,并进行相关配置与功能测试三、实验原理:DNS:是域名系统(DomainNameSystem)的缩写,指在Internet中使用的分配名字和地址的机制。域名系统允许用户使用友好的名字而不是难以记忆的数字——IP

  • pycharm解析器找不到

    pycharm解析器找不到

    2021年10月21日
  • 如何理解海森堡的「不确定性原理」(总结)「建议收藏」

    如何理解海森堡的「不确定性原理」(总结)「建议收藏」如何理解海森堡的「不确定性原理」(总结)一、总结一句话总结:海森堡紧跟着给出“测不准原理”:【越精确地知道位置,则越不精确地知道动量】不确定性原理”的意思是:【一个运动粒子的位置和它的动量不可

  • java中map根据value找key_Java Map和Map<String, Object>类型,map通过value找key

    java中map根据value找key_Java Map和Map<String, Object>类型,map通过value找keyMap是Map的一个泛型形式,俩个之间实际上是一个东西,但是用法却有点不一样1、Map:里面存放的是键值对集合,键值对的类型可以是任意封装类型实例Mapmap=newHashMap();//以下的俩种使用方式都是对的map.put(“a”,1);map.put(11,”abc”);2、Map:中只能存放指定类型的key和指定类型的value如下Map中只能存放String类型的键,Object…

  • Visual Studio 2015 解决方案资源管理器

    Visual Studio 2015 解决方案资源管理器位置解决方案资源管理器窗口默认位于右上角。它与另一个窗口类视图位于相同的位置。打开类视图可以在菜单栏中选择视图|类视图即可打开该窗口。如下图:解决方案管理器窗口显示了组成ConsoleApplication1项目的文件,包括我们在其中添加代码的文件Program.cs和其它内容。注意:所有C#代码文件都使用.cs文件扩展名。现在不需要考虑除了Pr

发表回复

您的电子邮箱地址不会被公开。

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