龙空技术网

通过python脚本快速添加域用户

下辈子作神 160

前言:

当前看官们对“pythonuser”可能比较珍视,看官们都需要学习一些“pythonuser”的相关文章。那么小编同时在网上搜集了一些关于“pythonuser””的相关文章,希望看官们能喜欢,我们快快来学习一下吧!

本文主要介绍在域环境中,使用python快速批量添加用户的方法。

本文在windows10,python3.11环境调试通过。

安装python-ldap库

Windows 使用执行pip install python-ldap 报错;提示找不到lber.h

需要在下面的网站:

找到适合自己python版本的ldap版本后,下载.whl包,然后执行pip install XXXX.whl,再进行安装。

基本代码如下:

def conn_ldap(ip,admin_user,admin_password,Domain,port=389):    l = ldap.initialize('ldap://{0}:{1}'.format(ip,port))    r = l.simple_bind_s('cn={0},cn=users,dc={1},dc=com'.format(admin_user,Domain),"{0}".format(admin_password))    if r[0] == SccessfullyAUTH:        print("Auth Successfully")        return l    else:        print("Auth Failed")        return Nonedef add_user(l,username,Domain):        dn = 'cn={0},cn=users,dc={1},dc=com'.format(username,Domain)  # 实际域        password=Generate_Random_Password(8)        ml = [            ('objectclass', 'user'.encode("ascii")),            ('userpassword', '{0}'.format(password).encode("ascii")), #            ('userPrincipalName', '{0}@{1}.com'.format(username,Domain).encode("ascii")),            ('displayName', username.encode("ascii")),            ('name',username.encode("ascii")),            ('sAMAccountName',username.encode("ascii")),            ('userAccountControl', "514".encode("ascii")),  #must 514        ]        result = l.add_s(dn, ml)        print("{0}User Add Successfully".format(username))        logging.info("{0}:{1}".format(username,password))    else:        print('({0}):User Alerady exists,check'.format(username))c = conn_ldap("X.X.X.X","administrator","admin@123456","xxxx.com")add_user(c,user,Domain)

上述代码虽可批量增加用户,但无法将新建的用户的userAccountControl属性设置为512。即:默认情况下建立的用户是被禁用的,其原因在于:代码中使用ldap的363端口进行连接,该端口是没有加密的。

要想通过代码启用账户,必须先重置密码,重置密码属于安全操作,必须使用TLS协议,需要在639端口访问LDAPs服务,才能继续。所以需要在域控服务器安装CA证书服务才能操作。

相关参考:

标签: #pythonuser