如何检索LDAP数据库的所有属性

2024-03-28

我在用LDAP模块 of python连接到LDAP服务器。我可以查询数据库,但我不知道如何查询检索数据库中存在的字段,这样我就可以提前通知用户查询数据库,告诉他他试图访问的字段不在数据库中。

例如,如果存在的字段只是

cn
memberOf

如果用户尝试使用过滤器查询数据库

cn and memberOf and notcontained

我应该能够知道不包含属性不在数据库模式中。

我怎样才能做到这一点。

Thanks.


您需要读取 LDAP 服务器的架构。

此代码可能适合您,作为模板

#!/usr/bin/env python
#coding:utf-8
# Author:  peter --<[email protected] /cdn-cgi/l/email-protection>
# Purpose: Tareas comunes a utilizar con respecto a schemas ldap
# Created: 01/05/12
import ldap
import ldap.schema



########################################################################
class SchemasIPA(object):

    __ldaps = ldap.schema

    #----------------------------------------------------------------------
    def __init__(self, url):
        """Constructor"""
        ldap._trace_level = 0
        ldap.set_option(ldap.OPT_DEBUG_LEVEL,0)
        subschemasubentry_dn, self.schema = ldap.schema.urlfetch(url,ldap._trace_level)
        self.oc_tree = self.schema.tree(ldap.schema.ObjectClass)        
        self.at_tree = self.schema.tree(ldap.schema.AttributeType)        

    def getobjectclasses(self):
        """
        trae la listas de objectclasses de un servidor dado
        """
        allobjc = {}
        for a in self.oc_tree.keys():
            objc = self.schema.get_obj(ldap.schema.ObjectClass, a)

            if objc != None:
                allobjc[objc.oid] = (objc.names, objc.must, objc.may, objc.sup, objc.obsolete)

        return allobjc

    def getatributes(self):
        """
        trae la lista de atributos de un servidor dado
        """
        allatt= {}
        o = []
        for a in self.at_tree.keys():
            att = self.schema.get_obj(ldap.schema.AttributeType, a)

            if att != None:
                allatt[att.oid] = (att.names, att.syntax, att.syntax_len, att.desc, att.collective, att.equality, att.single_value)

        return allatt

    def getvalidoid(self, objects):
        """
        retorno un valor oid libre valida para la creacion de esquemas y atributos
        el proceso valido es pedirle a la iana un oid valido, pero se tarda mas de un mes
        los oid a utilizar son valores predefinidos al momento de la instalacion del servidor ldap
        """
        pass

if __name__ == '__main__':
    sch = SchemasIPA('ldap://localhost')
    #at = sch.getatributes()
    ob = sch.getobjectclasses()

    for a, b in ob.iteritems():
        print a
        print b[0]

然后你可以像这样包装这个类

#a file contained the above class
import schemas

olschemas = schemas.SchemasIPA(url='ldap://192.168.1.81')

#here are, some magic :)
pa = olschemas.schema.get_obj(olschemas._SchemasIPA__ldaps.ObjectClass, 'posixaccount')
pa.must #going to print all the attributes that can't be null's
pa.may #going to print all the attributes that are optional's
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检索LDAP数据库的所有属性 的相关文章

随机推荐

  • R Markdown 在一个项目中找不到 .bib 文件,而在另一个项目中工作正常

    Rmd 在文件 x 中引用良好 单击 knit 将引用添加到我的引用列表后 但是在文件 y 中 还有一个 rmd 文件设置如下 title Swans bibliography library bib output html documen
  • 从批处理文件运行 vbscript

    我只需要编写一个简单的批处理文件来运行 vbscript vbscript 和批处理文件位于同一文件夹中 并且位于 SysWOW64 目录中 因为 vbscript 只能在该目录中执行 目前我的批处理文件如下 echo off WINDIR
  • 如何通过 XMPP (Jabber) 消息在网络上发送图像?

    For the 用于 Stack Overflow 聊天的 XMPP 界面 https meta stackexchange com questions 57316 offer an xmpp method for chat 63420 6
  • Python 使用 urllib2 发起请求时 Tor 检查失败

    读完后other https stackoverflow com questions 1096379 tor with python 问题 https stackoverflow com questions 711351 using url
  • 如何在 Windows 7 上的 Python 2.7.1 中安装 easy_install

    我已在 Windows 7 上安装了 Python 2 7 1 但无法安装 easy install 请帮我 我通常只是跑步ez setup py http peak telecommunity com dist ez setup py I
  • 如何在Eclipse中引用不在src中的文件

    我正在尝试获取 MyBatis 的资源 该教程指出我的连接工厂中需要以下内容 String resource org mybatis example Configuration xml Reader reader Resources get
  • 如何更好地优化 iOS 上的网络?

    我在 GitHub 上创建了一个项目 以便我可以学习如何优化 iOS 应用程序的网络 我大量使用了块和 GCD 在观看 WWDC 2012 视频和过去几年的视频后 我了解到我可以使用 NSOperationQueue 做更多事情 具体来说
  • 在IIS上使用swagger发布web api

    在遵循此示例后 我正在尝试弄清楚如何使用 Swagger SwashBuckle 发布 net core 3 API 所以它可以在本地运行 当我按 F5 IIS Express 时 会在下面启动该网站http localhost 8033
  • 如何构建具有开放问题的 Dialogflow CX 代理?

    我正在尝试为 StackOverflow 之类的东西构建一个 Dialogflow 代理 它负责处理用户提出完整的问题 我想存储答案 并将其反馈给用户 例如 User I get an error CX Which error Java l
  • 扩展用户管理器

    在我的 NET Core 2 0 MVC 项目中 我添加了附加值来扩展 ApplicationUser public class ApplicationUser IdentityUser public string Name get set
  • java- libgdx build.gradle 与 AdMob 不同

    我正在为 android 构建一个应用程序并使用 libGdx 我检查了一百万个关于如何添加 Admob 的教程 每个教程都要求调整 build gradle 文件 但我的文件与他们的文件不一样 他们有依赖项和不同的东西 知道如何在我的 b
  • NSURLConnection 委托方法未执行

    我正在运行 Apple 的以下示例代码 NSString requestURL NSString alloc initWithString http google com NSURLRequest theRequest NSURLReque
  • numpy 中的数组按行排序

    我想按第一行对 numpy 中的数组进行排序 例如 import numpy as np test np array 1334 71601720318 930 9757468052002 1018 7038817663818 0 0 1 0
  • SDL - 绘制“负”圆圈(战争迷雾)

    我有这个 800x600square 我想绘制到屏幕上 我想在其中 切割 圆圈 其中 alpha 为 0 基本上我是在地图上绘制整个矩形 因此在我绘制的这些 圆圈 中 您可以看到地图 否则您会看到灰色方块 所以 我假设你想在你的一款游戏中添
  • 使用 jQuery datepicker 和 Angular 2 更改事件

    当我使用 jQuery datepicker 插件时 我在捕获更改事件时遇到一些问题 并且我尝试使用 change 方法来捕获更改 但似乎当我使用此插件时 角度无法捕获它 Component selector foo element tem
  • iframe 中的回调方法将值返回给 opener

    我必须在 iframe 中调用回调方法才能将值返回给 opener I know 挤压盒 http digitarald de project squeezebox 有 分配 打开 关闭 静态方法 但我不明白它是如何工作的 有人可以帮助我吗
  • 如何在文本文件更改时重新初始化 java servlet

    我有一个 servlet 它在初始化期间从文本文件中提取数据 现在我正在使用 cron 作业更新该文本文件 比如每天上午 10 点 并希望在每次该特定文件发生更改时重新初始化 servlet 我可以遵循的第二种方法是将 servlet 的重
  • 引用声明是否为引用对象引入了新名称?

    In 这个问题 https stackoverflow com q 33344259 560648我们知道 RVO 不能应用于像这样的表达式p first 在评论中还建议 RVO 通常不适用于类似这样的表达式r在声明之后auto r p f
  • 局部声明隐藏实例变量警告

    本地声明隐藏 self treatmentId treatmentId 附近的实例变量消息弹出窗口和 self treatmentName treatmentName implementation Treatment synthesize
  • 如何检索LDAP数据库的所有属性

    我在用LDAP模块 of python连接到LDAP服务器 我可以查询数据库 但我不知道如何查询检索数据库中存在的字段 这样我就可以提前通知用户查询数据库 告诉他他试图访问的字段不在数据库中 例如 如果存在的字段只是 cn memberOf