首页
python
Win桌面应用自动化pywinauto
pywinauto遍历展示程序的所有菜单项
Python3使用串口
Python字符串处理
Python3实现配置文件差异对比(键值对key=value的形式)
正则
正则匹配两个字符之间的字符串
正则提取markdown中图片链接
正则表达式基本知识
字符串-正则实例
Python生成8位随机字符串的一些方法
python3批量ping检测
python3检测一批主机ip的tcp端口
Python3--DNS
3D人体骨架检测(mediapipe)
Python-网络
检测到win电脑断网就发出告警声音
Python编写的DNS服务可靠性测试程序
Python编写的TCP/UDP端口探测程序
Python抓包-Pyshark
并发扫描TCP、UDP端口
Python-DHCP
端口的问题以及绑定端口(Python)
VSCode编辑器
python远程开机工具
Pyhton3--Win注册表
开源IT运维项目
python知识点
Python开源运维项目集合
python3备份交换机配置
Python3使用snmp获取H3C交换机arp表
Python检测tcp端口状态并发送到企微群
Python3使用smtp发邮件
Python3使用smtp发邮件(带附件)
Python3拉取微软AD域所有用户信息
Python3使用微软AD域账号认证
自动更新公网域名的解析(阿里云)
每日定时推送Excel中排班表信息到企微群
Django
Django模板标签
Django在发送POST请求时返回403错误
Django-mysql数据库条件查询
uwsgi 配置 python virtualenv 虚拟环境目录 ( ini 配置)
常用收藏
python3数据类型转换
python处理文本
txt每行一个字符串_用英文逗号连接
txt_匹配并拆分出需要字符串
python获取日期时间
python执行linux命令的三种方式
python使用ssh连接到linux服务器执行命令
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
Python3拉取微软AD域所有用户信息
环境 Win10 + Python3.7 示例 域控ip、域、账号、密码: 192.168.1.249 ,"bj.localnetwork.cn", 'zhangsan', '123456' ```python #! /usr/bin/python # -*- coding:utf-8 -*- #run ad中所有用户 from ldap3 import Server, Connection, ALL, NTLM import datetime class operate_AD(): def __init__(self, Domain, User, Password): self.domain = "192.168.1.249" #Domain self.user = User self.pwd = Password self.DC = ','.join(['DC=' + dc for dc in Domain.split('.')]) print(self.DC) self.pre = Domain.split('.')[0].upper() print(self.pre) print(self.domain) self.server = Server(host=self.domain, port=389, use_ssl=False, get_info=ALL) self.user2 = "CN=张三,OU=IT运维组,OU=运维部,OU=技术中心,OU=事业部,OU=LN,OU=Person,DC=bj,DC=localnetowrk,DC=cn" #user = self.pre + '\ ' + self.user self.conn = Connection(self.server, user=self.user2, password=self.pwd, auto_bind=True) print(111111111) 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 print("Get_All_UserInfo") res = self.conn.search(search_base=self.DC, search_filter='(&(objectclass=person)(!(sAMAccountName=*$)))', attributes=att_list, paged_size='50', search_scope='SUBTREE') # 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("bj.localnetwork.cn", 'zhangsan', '123456') # for user in act.Get_All_UserInfo(): # print(user) # print('*'*50) with open('userlist001.txt', 'a', encoding='utf-8') as f: f.write("开始执行\n") act=operate_AD("bj.localnetwork.cn", 'zhangsan', '123456') #域 账号 密码 for user in act.Get_All_UserInfo(): print(user) f.write(str(user)) f.write('\n') f.write("执行结束\n") ```
local
2021年9月17日 15:38
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码