我需要你的帮助。 我需要一个 python 脚本,该脚本将获取 Active Directory 中的某个组并创建该组中的用户列表。
我对活动目录一无所知,我请求你的帮助。
我能够获胜。此代码获取组中的用户列表并显示它。此外,被阻止的用户不会显示在列表中。
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)
想要添加 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)) 这对我有用。