使用python获取Active Directory组中的用户列表

问题描述 投票:0回答:2

我需要你的帮助。 我需要一个 python 脚本,该脚本将获取 Active Directory 中的某个组并创建该组中的用户列表。

我对活动目录一无所知,我请求你的帮助。

python python-3.x active-directory
2个回答
1
投票

我能够获胜。此代码获取组中的用户列表并显示它。此外,被阻止的用户不会显示在列表中。

from ldap3 import Server, Connection, ALL, NTLM, SUBTREE

ldap_cred = {'server_ip': 'SERVER_IP',
            'user': 'USER_LOGIN',
            'password': 'USER_PASS'}

ldap_conn = Connection(Server(ldap_cred['server_ip']),
                        user=ldap_cred['user'],
                        password=ldap_cred['password'],
                        authentication=NTLM,
                        auto_bind=True)

ldap_users_dir = 'OU=Users,DC=test,DC=local'
ldap_servers_dir = 'OU=Groups,DC=test,DC=local'
user_group = 'GROUP_W_USERS'

def get_group(group_name):
    ldap_conn.search(ldap_servers_dir, '(cn={})'.format(group_name))
    return ldap_conn.response[0]['dn']

def get_users(group_path):
    ldap_conn.search(ldap_users_dir,
        '(&(cn=*)(memberOf={})(objectClass=User)\
        (!(userAccountControl=514))(!(userAccountControl=66050)))'.format(group_path),
        attributes=('sAMAccountName', 'memberof'),
        search_scope=SUBTREE)
    return ldap_conn.entries

if __name__ == '__main__':
    group_p = get_group(user_group)
    for user in get_users(group_p):
        user_n = user.sAMAccountName.value.lower()
        print(user_n)

0
投票

想要添加 ZULI 的回复,但我没有足够的声誉点来发表评论。经过一些调整后我让它工作了:

我必须使用该组的完整专有名称,因此我的过滤器如下所示: (&(objectClass=person)(memberof=CN=TestGP,CN=Users,DC=mydomain,DC=net))

我还必须更改 userAccountControl 参数。根据这个site,userAccountControl参数需要一个OID字段,因此要获取我使用的所有密码过期的启用用户 (!(userAccountControl:1.2.840.113556.1.4.803:=66050)) 这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.