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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【Firebug入门指南】「建议收藏」

    据说,对于网页开发人员来说,Firebug是Firefox浏览器中最好的插件之一。…

    2022年1月18日
  • 根据类去中的属性名去拿属性值

    根据类去中的属性名去拿属性值

    2021年6月10日
  • 关于Python3的import问题(pycharm可以运行,命令行import错误)

    关于Python3的import问题(pycharm可以运行,命令行import错误)以前从来没有写过特别多的代码,这次在阅读论文的时候跑别人的代码的时候出现了很多import的问题,这里我想跟大家分享一下,我在Ubuntu系统,使用的是anaconda3,版本为3.6,我一般会在pycharm上跑代码,但是有时候pycharm上跑通的代码,在命令行下总出现import的问题,所以这里来总结一下,我就举个简单的例子吧!一、同一目录下的import下面是我的文档的结构:你可以…

    2022年8月25日
  • stack overflow at line 9[通俗易懂]

    stack overflow at line 9[通俗易懂]web开发中,从设备得到一些信息显示在web页面中的文本框中,结果显示对话框1.起初认为可能是文本框的字符限制原因,有默认长度,故加上maxlength=128足够长,结果问题还是存在。2.因为这个问题在goole火狐 搜狗浏览器中都不存在,在IE6 360极速浏览器中存在,所以认为可能是浏览器的设置问题,从网上找了一下,解决办法是:打开IE的工具-Internet选项

    2022年7月15日
  • Java中CAS 基本实现原理「建议收藏」

    Java中CAS 基本实现原理「建议收藏」一、前言了解CAS,首先要清楚JUC,那么什么是JUC呢?JUC就是java.util.concurrent包的简称。它有核心就是CAS与AQS。CAS是java.util.concurrent.atomic包的基础,如AtomicInteger、AtomicBoolean、AtomicLong等等类都是基于CAS。什么是CAS呢?全称CompareAndSwap,比较并交换。CAS有三个操作数,内存值V,旧的预期值E,要修改的新值N。当且仅当预期值E和内存值V相同时,将内存值V修改为N,否则什

    2022年7月8日
  • JVM调优工具「建议收藏」

    JVM调优工具「建议收藏」JVM调优工具Jconsole:jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。JProfiler:商业软件,需要付费。功能强大。VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释放情况、集合类检查、对象树上面这些调优工具都提供了强大的功能,但是总的来说一般分为以下几类功能堆信息查…

    2022年6月1日

发表回复

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

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