Python 脚本:从 AD1 域控制器复制用户和密码到 AD2
要实现这个需求,你可以使用以下步骤:
- 连接到 AD1 域控,并获取用户和密码信息。
- 将用户和密码信息保存到 tmp.txt 文件中。
- 连接到 AD2 域控,并读取 tmp.txt 文件中的用户和密码信息。
- 将用户和密码信息更新到 AD2 域控中。
下面是一个示例代码,用于连接域控并实现上述功能:
import csv
import ldap
# 连接到 AD1 域控
ad1_server = 'ad1.example.com'
ad1_username = 'admin'
ad1_password = 'password'
ad1_conn = ldap.initialize(f'ldap://{ad1_server}')
ad1_conn.simple_bind_s(ad1_username, ad1_password)
# 获取 AD1 域控中的用户和密码信息
base_dn = 'dc=example,dc=com'
filter_str = '(objectClass=user)'
attributes = ['sAMAccountName', 'userPassword']
result = ad1_conn.search_s(base_dn, ldap.SCOPE_SUBTREE, filter_str, attributes)
users = []
for dn, entry in result:
username = entry.get('sAMAccountName')[0].decode()
password = entry.get('userPassword')[0].decode()
users.append({'username': username, 'password': password})
# 保存用户和密码信息到 tmp.txt 文件
with open('tmp.txt', 'w', newline='') as file:
writer = csv.DictWriter(file, fieldnames=['username', 'password'])
writer.writeheader()
writer.writerows(users)
ad1_conn.unbind()
# 连接到 AD2 域控
ad2_server = 'ad2.example.com'
ad2_username = 'admin'
ad2_password = 'password'
ad2_conn = ldap.initialize(f'ldap://{ad2_server}')
ad2_conn.simple_bind_s(ad2_username, ad2_password)
# 从 tmp.txt 文件中读取用户和密码信息,并更新到 AD2 域控
with open('tmp.txt', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
username = row['username']
password = row['password']
ad2_conn.modify_s(f'cn={username},ou=Users,dc=example,dc=com', [(ldap.MOD_REPLACE, 'userPassword', password)])
ad2_conn.unbind()
请根据实际情况修改代码中的域控服务器地址、用户名、密码、Base DN等信息,并确保已安装 python-ldap 库。
原文地址: https://www.cveoy.top/t/topic/b58P 著作权归作者所有。请勿转载和采集!