一、安装
pip install ldap3
二、基本使用
1. 设置服务器
1.1 设置单个服务器
server=Server('192.168.1.1',use_ssl=True,get_info=ALL)
1.2 设置多个服务器
Ad_IP_List=['192.168.1.1','192.168.1.2'] #设置服务器列表 Server_pool = ServerPool(None) #声明服务器连接池 #遍历服务器列表,将服务器添加至服务器连接池 for line in Ad_IP_List: server = Server(line, use_ssl=True, get_info=ALL) Server_pool.add(server)
备注:如要对AD进行修改操作,需要使用use_ssl=True参数,否则无法正常执行。
2. 建立连接
2.1 连接服务器
2.1.1 连接单个服务器
conn = Connection(Server, user=Ad_M_User, password=Ad_M_Passwd, authentication=NTLM, auto_bind=True)
2.1.2 根据服务器池进行连接
conn = Connection(Server_pool, user=Ad_M_User, password=Ad_M_Passwd, authentication=NTLM, auto_bind=True)
2.2 查看连接状态
>>> conn Connection(server=Server(host='192.168.1.1', port=636, use_ssl=True, allowed_referral_hosts=[('*', True)], tls=Tls(validate=<VerifyMode.CERT_NONE: 0>), get_info='ALL', mode='IP_V6_PREFERRED'), user='domain\administrator', password='123456', auto_bind='NO_TLS', version=3, authentication='NTLM', client_strategy='SYNC', auto_referrals=True, check_names=True, read_only=False, lazy=False, raise_exceptions=False, fast_decoder=True, auto_range=True, return_empty_attributes=True, auto_encode=True, auto_escape=True, use_referral_cache=False)
3. 搜索
3.1 搜索AD基本信息
>>> conn.search(search_base='',search_filter='(objectClass=*)',search_scope=BASE,attributes=['*']) >>> conn.entries
例:通过搜索AD,输出DN。conn.entries命令输出搜索内容
DN=str(conn.entries[0]['rootDomainNamingContext']).split(': ')[0]
3.2 搜索OU
下列DN变量为: DN=’OU=Group,OU=Group,DC=it,DC=baidu,DC=com’
>>> conn.search(DN,'(ou=*)')
3.3 搜索OU下面的所有用户
>>> conn.search(Group_DN, '(objectclass=person)', attributes=ALL_ATTRIBUTES)
3.4 搜索单个用户所有信息
>>> conn.search(DN, "(sAMAccountName=ADMIN)", attributes=['*'])
3.5 搜索单个用户的OU信息
>>> conn.search(DN, "(sAMAccountName=ADMIN)", attributes=['distinguishedName'])
4.操作AD
4.1 启用或禁用帐户
下列CN变量为: CN=’CN=UserName,OU=Group,OU=Group,DC=it,DC=baidu,DC=com’
4.1.1 启用帐号:66048 为密码永不过期 及启用帐号 单启用帐号为 512
>>> conn.modify(CN, {'userAccountControl': [(MODIFY_REPLACE, ['66048'])]})
4.1.2 禁用帐号:66050 为密码永不过期 及禁用帐号 单禁用帐号为 514
>>> conn.modify(CN, {'userAccountControl': [(MODIFY_REPLACE, ['66050'])]})
4.2 修改用户密码
>>> conn.extend.microsoft.modify_password(OU, '123456')
文档:
官方文档:https://ldap3.readthedocs.io/
2019-7-8 17:4:50
评论区