Can';无法让Python ldap3显示模式

Can';无法让Python ldap3显示模式,python,ldap,ldap3,Python,Ldap,Ldap3,我有一个项目要删除大型LDAP数据库中的重复项,但到目前为止 我正在尝试获取模式,但什么都看不到: >> import ldap3 >>> s = ldap3.Server('ldaps://omitted') >>> s.schema >>> s2 = ldap3.Server('ldaps://omitted',get_info=ldap3.ALL) >>> s2.schema >>> s2

我有一个项目要删除大型LDAP数据库中的重复项,但到目前为止

我正在尝试获取模式,但什么都看不到:

>> import ldap3
>>> s = ldap3.Server('ldaps://omitted')
>>> s.schema
>>> s2 = ldap3.Server('ldaps://omitted',get_info=ldap3.ALL)
>>> s2.schema
>>> s2.info
>>> s.info
(省略了URL,因为我还没有得到雇主的许可。)


你知道吗?服务器是安全设置的,连接时不需要任何身份验证。

那么,您必须先绑定连接。试试这个:

从ldap3导入连接,服务器
#使用636进行安全连接,可能需要使用_ssl=True
服务器=服务器('myhost.company.com',端口=389)
cnx=连接(服务器,用户='cn=user',密码='whatever')
#使用auto_bind=True或显式设置bind
cnx.bind()
#现在您应该能够看到模式了
#注意:根据架构的不同,可能需要很长时间才能显示它
打印(server.schema)

这只是部分答案,但我已经取得了一些进展。重要的信息是服务器确实需要身份验证,尽管我第一次看到的PHP代码似乎没有使用它

我现在有了这个代码:


from pprint import pprint
from ldap3 import Server, Connection, SAFE_SYNC, ALL

search_base = '*omitted*'
search_filter = '(uid=mmcwiggins)'
attrs = ['*']

server = Server('ldaps://*omitted*', get_info=ALL)
mypass = 'not.really.the.pass'.encode('iso-8859-1')
connect = Connection(server, user='mmcwiggins', password=mypass)
connect.bind()
print(connect)
print(server.schema)
产生这种反应的原因是:

ldaps://lbdc.secret.company.com:636 - ssl - user: mmcwiggins - not lazy - unbound - open - <local: 10.184.200.19:49737 - remote: 10.184.67.152:636> - tls not started - listening - SyncStrategy - internal decoder
None
ldaps://lbdc.secret.company.com:636 -ssl-user:mmcwiggins-notlazy-unbound-open--tls未启动-侦听-同步策略-内部解码器
没有一个

看到这个后有什么想法吗?

我终于用ldapsearch而不是Python实现了

我得到了当地一位大师的帮助;它需要主目录中的.ldaprc文件。此文件中的关键参数是TLS_REQCERT ALLOW

完整的命令行是这样的(公司标识被屏蔽):


ldapsearch-x-D“SEA\mmcwiggins”-b“DC=SEA,DC=CORP,DC=****,DC=COM”-E pr=1000/noprompt-Hldaps://lbdc.sea.corp.******.com-W sAMAccountName='*'>bigresult

我正在绑定它。。。我尝试了上面的方法,除了server.schema而不是cnx.schema,我没有得到任何输出…它是立即返回提示还是您可能只是不耐烦?我在一个广告服务器上试过,花了很长时间才在我的屏幕上得到一个输出。它没有立即返回。但是你可以毫无问题地查询你的目录,对吗?你说的“查询你的目录”是什么意思?如果我甚至看不到模式,我怎么做其他事情?为什么在执行程序中需要模式?我需要知道如何查询数据;如何在不查看模式的情况下执行此操作?