使用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列出它们
答案 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'