ldap查询特定部门人员列表

举报
Amrf 发表于 2020/08/20 09:05:34 2020/08/20
【摘要】 最近内网灰度发布的时候,需要批量添加整个部门的人员,怎么获取这个人员列表呢?用LDAP做用户登录和关联用户查询的时候我们可以看到属性中有相关部门信息;方便起见,这个代码用python写写就好实现参考:只要 在https://blog.csdn.net/changgong2411/article/details/100965472的基础上修改一下就达到我们的输出部门人员列表的要求了from l...

最近内网灰度发布的时候,需要批量添加整个部门的人员,怎么获取这个人员列表呢?用LDAP做用户登录和关联用户查询的时候我们可以看到属性中有相关部门信息;

方便起见,这个代码用python写写就好

实现参考:

只要 在https://blog.csdn.net/changgong2411/article/details/100965472的基础上修改一下就达到我们的输出部门人员列表的要求了

from ldap3 import Server, Connection, ALL, NTLM
import datetime
import json

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() #'china'
		self.server = Server(self.domain, use_ssl=False,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组织,不包含域地址
		'''
		#print('Get_All_UserInfo')
		att_list = ['displayName','userAccountControl','sAMAccountName']
		# org_base = ','.join(['OU=' + ou for ou in org.split('.')]) + ',' + self.DC
		org_base = "dc=china,dc=组织,dc=com"
		res = self.conn.search(search_base=org_base,search_filter='(&(department=匹配的部门信息*))',attributes=['department','sAMAccountName','sn'], paged_size='50',search_scope='SUBTREE') 
		if res:
			for each in  self.conn.response:
				print(each['attributes']['sn'])#['dn'].split(",")[0].split("=")[1] ['attributes']['sAMAccountName']
		return []

def main():
	act=operate_AD('ldap://ldap-host:port','user','pwd')
	for user in act.Get_All_UserInfo():
		print(user)
		print(' '*50)
			
if __name__ == '__main__':
    main()


参考:

https://blog.51cto.com/unicom/2421224

https://www.thinbug.com/q/40225230

https://blog.csdn.net/sudaxhh/article/details/52334618

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。