python模块下载名单_python :通过Ldap 3 模块查询AD 组和 AD 用户名单

from ldap3 import Server, Connection, ALL, NTLM

import datetime

定义一个类用于操作AD

class operate_AD():

def init(self,Domain,User,Password):

self.domain=Domain

self.user=User

self.pwd=Password

self.DC=','.join(['DC=' + dc for dc in Domain.split('.')])

self.pre = Domain.split('.')[0].upper()

self.server = Server(self.domain, use_ssl=True,get_info=ALL)

self.conn = Connection(self.server, user=self.pre+'\'+self.user, password=self.pwd, auto_bind=True)

self.u_time=datetime.date.today()

def Get_All_UserInfo(self):

'''

查询组织下的用户

org: 组织,格式为:aaa.bbb 即bbb组织下的aaa组织,不包含域地址

'''

att_list = ['displayName', 'userPrincipalName','userAccountControl','sAMAccountName','pwdLastSet']

# org_base = ','.join(['OU=' + ou for ou in org.split('.')]) + ',' + self.DC

res = self.conn.search(search_base=self.DC,search_filter='(&(objectclass=person)(!(sAMAccountName=*$)))',attributes=att_list, paged_size='50',search_scope='SUBTREE')

if res:

for each in self.conn.response:

# print(each['dn'])

user=[]

if len(each)==5:

user=[each['dn'],each['attributes']['sAMAccountName'],each['attributes']['displayName'],each['attributes']['userAccountControl'],self.u_time]

yield(user)

else:

print('查询失败: ', self.conn.result['description'])

return None

def Get_All_GroupInfo(self):

'''

查询组织下的用户

org: 组织,格式为:aaa.bbb 即bbb组织下的aaa组织,不包含域地址

'''

att_list = ['cn','member','objectClass','userAccountControl','sAMAccountName','description']

# org_base = ','.join(['OU=' + ou for ou in org.split('.')]) + ',' + self.DC

res = self.conn.search(search_base=self.DC,search_filter='(objectclass=group)',attributes=att_list, paged_size='',search_scope='SUBTREE')

if res:

for each in self.conn.response:

Group=[]

if len(each)==5:

for member in each['attributes']['member']:

group=[each['attributes']['sAMAccountName'],member,self.u_time]

yield(group)

else:

print('查询失败: ', self.conn.result['description'])

return None

def main():

pass

if name == 'main':

act=operate_AD('demo.com','User','password')

for user in act.Get_All_UserInfo():

print(user)

print(''50)

for group in act.Get_All_GroupInfo():

print(group)

print('*'*50)

备注: 微软search_filter 语法

https://docs.microsoft.com/en-us/windows/win32/adsi/search-filter-syntax

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值