需要帮助形成python-ldap查询以列出组成员

时间:2017-08-28 18:06:23

标签: linux ldap openldap ldap-query python-ldap

使用openldap在Linux机器上运行此脚本

为什么这些不在群组中列出用户...它只列出群组......似乎没有人能够解决这个问题......请帮助......

server = 'ldap://myAddress'

dn = 'uid=bill,cn=users,cn=accounts,dc=example,dc=com'

base = 'cn=coolPeople,cn=accounts,dc=example,dc=com'

pw = "password"
filter = '(objectclass=posixgroup)'
attrs = ['memberuid']

con = ldap.initialize(server)

try:
    con.start_tls_s()
    con.simple_bind_s(dn,pw)
    groups = con.search_s(base, ldap.SCOPE_SUBTREE, filter, attrs)
    for a in groups:
        print 'Group:', a[0]
        print 'Members:', a[-1].get('memberuid')
except ldap.INVALID_CREDENTIALS:
    print "Your username or password is incorrect."
    sys.exit()
except ldap.LDAPError, e:
    if type(e.message) == dict and e.message.has_key('desc'):
        print e.message['desc']
    else:
        print e
    sys.exit()
finally:
    print "Doing unbind."
    con.unbind()

结果:

Group: cn=g1,cn=groups,cn=accounts,dc=example,dc=com
Members: None
Group: cn=g2,cn=groups,cn=accounts,dc=example,dc=com
Members: None
Group: cn=coolPeople,cn=groups,cn=accounts,dc=example,dc=com
Members: None
Doing unbind.

我的群组中有很多用户,但似乎无法使用python-ldap列出它们

2 个答案:

答案 0 :(得分:1)

python-ldap返回搜索结果作为字符串键字典。用作dict键的字符串区分大小写(与LDAP属性类型名称相反)。

LDAP服务器可能会返回此旧属性,其驼峰式名称为 memberUid (请参见RFC 2307)。

因此,此代码更改将使您更进一步:

a[-1].get('memberUid')

答案 1 :(得分:0)

我不确定为什么你的列表失败了,但我认为你的基础是错误的。

尝试进入分支机构,看看是否有帮助:

base = 'cn=accounts,dc=example,dc=com'

base = 'dc=example,dc=com'