@login_requireddefad_user(request):if request.method != "POST":return render(request,"index.html")try:

FirstName= request.POST.get('first-name') #姓

LastName = request.POST.get('last-name') #名

LognName = request.POST.get('logn-name') #登录名

LognPassword = request.POST.get('logn-password') #登录密码

OuName = request.POST.get('OU') #厂区部门

GroupsName = request.POST.get('GROUPS') #工作组

EmpNo = request.POST.get("logn-empno") #工號

except:return render(request,"index.html")#用戶提交表單處理---------------------------------------------------------------------

FirstName = FirstName.replace(" ", '') #去除字符串中的空格

LastName = LastName.replace(" ", '') #去除字符串中的空格

LognName = LognName.replace(" ", '') #去除字符串中的空格

LognPassword = LognPassword.replace(" ", '') #去除字符串中的空格

#GroupsName = GroupsName.replace(" ", '') #去除字符串中的空格

EmpNo = EmpNo.replace(" ", '') #去除字符串中的空格

if FirstName and LastName and LognName and LognPassword andGroupsName:pass

else:return render(request, "error.html", {'error_message':'提交了非法字符串,無法建立,請重試'})#根據OU代碼在數據庫中查找相對應的OU名

try:

OuNameDatabase= OuSwitch.objects.get(ou_code=OuName)except:return render(request, "error.html",{'error_message':'無法識別的組織單位!'})#OU處理-----------------------------------------------------------------------------------------------

allName = FirstName+LastName

User= 'CN=' + allName + ','OuPath= User +OuNameDatabase.ou_name

DisplayName= LognName+'('+ allName +')' #XXX(XXX)

UserPrincipalName = LognName + '@Company.com.cn' #後綴

print('組織路徑:'+OuPath)print('用戶組ID:'+GroupsName)print('工號:'+EmpNo)#Group工作組處理-----------------------------------------------------------------------------------------------

GroupsName = GroupsName.split(',') ## 將一個或多個工作組轉換成列表

groups =[]for group inGroupsName:try:

groups.append(GroupSwitch.objects.get(id=group)) #查找用戶組OU

except:pass

if groups == []: #如果遇到用戶提交的數據出現無法找到的情況,將檢測這組數據是否全不達標

return render(request, "error.html",{'error_message':'無法識別的工作組!'})#print("查詢到的數據:"+ groups )

#LDAP主程序---------------------------------------------------------------------------------------------------

try:

server= Server("ldaps://Company.com.cn:636", use_ssl=True)

conn= Connection(server, user="Company\\user_registration", password="whoareyou2009", authentication=NTLM, auto_bind=True)except:return render(request, "error.html",{'error_message':'無法連接至域控,請稍候再試!'})ifconn.bind():#-------------------------添加用戶前檢測用戶是否存在---------------------------#

dn_look_path = 'ou=Company,dc=Company,dc=com,dc=cn'

if conn.search(dn_look_path, '(cn={})'.format(allName)):

conn.unbind()

conn.closedreturn render(request, "error.html",{'error_message':'{}用戶名已存在,請更換其他名稱后再試'.format(allName)})if conn.search(dn_look_path, '(sAMAccountName={})'.format(LognName)):

conn.unbind()

conn.closedreturn render(request, "error.html",{'error_message':'{}登錄名已存在,請更換其他登錄名后再試'.format(LognName)})#-------------------------添加用戶---------------------------#

msg_add = conn.add(OuPath,'inetOrgPerson',{'displayName':DisplayName, #顯示名

'givenName':LastName, #名

'sn':FirstName, #姓

'sAMAccountName':LognName, #登錄名

'userPrincipalName':UserPrincipalName, #完整名

'Description':EmpNo, #工號

'scriptPath':'user'}) #用戶登錄腳本

#-------------------------設置用戶初始密碼---------------------------#

print(msg_add)ifmsg_add:

msg_jh= conn.extend.microsoft.modify_password(OuPath,new_password=LognPassword, old_password=None)#-------------------------將用戶啟用---------------------------#

ifmsg_jh:try:

changeUACattribute= {'userAccountControl': [('MODIFY_REPLACE', [512])]}

conn.modify(OuPath, changes=changeUACattribute)except:return render(request, "error.html", {'error_message': '{}用戶啟用失敗!'.format(allName)})#-------------------------設置用戶下次需更改密碼---------------------------#

try:

changeTime= {'pwdLastSet': [('MODIFY_REPLACE', [0])]}

conn.modify(OuPath, changes=changeTime)except:print('設置用戶下次更改密碼失敗')return render(request, "error.html", {'error_message': '{}設置用戶下次更改密碼失敗'.format(allName)})#-------------------------加入工作組------------------------------------#

for group_cache ingroups:#groupdn = 'CN=資訊部,OU=資訊,OU=總管理處,OU=Company,DC=Company,DC=com,DC=cn', 'CN=jobs,OU=人事,OU=總管理處,OU=Company,DC=Company,DC=com,DC=cn'

try:print(group_cache.group_name)

conn.extend.microsoft.add_members_to_groups(OuPath, groups='{}'.format(group_cache.group_name))except:#return render(request, "error.html", {'error_message': '{}創建成功,但尝试加入用戶組失敗'.format(User[3:])})

pass

#-------------------------釋放與服務器的連接---------------------------#

conn.unbind()

conn.closedreturn render(request, "succeed.html", {'username':allName,'lognname':LognName,'lognpw':LognPassword,'oupath':OuNameDatabase,'groups':groups})else:return render(request, "error.html", {'error_message': '登錄名{},註冊失敗!'.format(LognName)})else:return render(request, "error.html", {'error_message': '與服務連接失敗,請聯繫資訊,或稍候再試'})

python读ad域日志_基于python LDAP3的AD域账号注册系统相关推荐

  1. 基于python爬虫技术的应用_基于Python爬虫技术的应用

    办公自动化杂志 一.引言 本文主要是对 Python 爬虫技术进行阐述,基于 python 的爬虫与其他语言相比的有很多优势.通过爬去某个网站的所有新闻这个案例,来进一步阐释 Python 爬虫技术的 ...

  2. python是商业组织吗_基于Python的电子商务系统的弹性架构与思考

    DOI:10. 19392 / j. cnki. 1671-7341. 201815075 基于 Python 的电子商务系统的弹性架构与思考 谢钟扬 湖南软件职业学院 湖南湘潭 411100 摘 要 ...

  3. python可以用于plc吗_基于Python的丰炜系列PLC与PC串行通信的实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的丰炜系列 PLC 与 PC 串行通 信的实现 作者:韩志三 来源:<硅谷> 2013 年第 22 期 摘 ...

  4. python卡方检验筛选特征原理_基于Python的遥感特征筛选—递归特征消除(RFE)与极限树(Extra-Trees)...

    引言 基于前几篇文章关于筛选方法的介绍,本篇同样给大家介绍两种python封装的经典特征降维方法,递归特征消除(RFE)与极限树(Extra-Trees, ET).其中,RFE整合了两种不同的超参数, ...

  5. python做数据库课设_基于Python的实时数据库设计

    基于 Python 的实时数据库设计 韩菲,金磊,戴文浩,李艳飞,杨树 [摘 要] Berkeley Db 作为一款优秀轻便的嵌入式数据库,在实际中得到了广 泛的应用,其提供了针对多种语言的 API ...

  6. 基于python的压测工具_基于Python和SIPp的自动化压力测试系统设计和实现

    信斌 王桂花 摘要:首先,分析了现有测试系统的不足,之后,介绍了软件组成和运行环境说明,最后,设计了基于Python和SIPp的自动化压力测试系统,并给出了相关代码.新的测试系统克服了现有测试系统的不 ...

  7. python能编plc吗_基于Python的丰炜系列PLC与PC串行通信的实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的丰炜系列 PLC 与 PC 串行通 信的实现 作者:韩志三 来源:<硅谷> 2013 年第 22 期 摘 ...

  8. python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...

  9. python图书馆管理系统实验报告_基于Python的图书馆业务报表自动生成研究

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的图书馆业务报表自动生成研 究 作者:辛海滨 来源:<电脑知识与技术> 2016 年第 27 期 摘要:针对 ...

最新文章

  1. Android Volley 库通过网络获取 JSON 数据
  2. editplus替换空白行的正则表达式
  3. Kernel Video Converter中文版
  4. c语言x的2取模_c语言如何取模运算
  5. Python报错:UnicodeDecodeError:‘ascii‘ codec can‘t decode byte 0xe8 in position
  6. Qt中颜色选择框输出所选中的颜色值
  7. GWO(灰狼优化)算法
  8. ftl转pdf及问题集锦
  9. 关于macos新功能——控制中心的一些事
  10. linux配置yum源、mount及yum命令
  11. 记一次2048小游戏开发
  12. GoC全教程(附各种下载、教程链接)
  13. 服务封装软件 nssm
  14. k3服务器注册,K3服务器信任注册设置
  15. 大数据Spark(一):框架概述
  16. 个人通过ipv6地址提供公网访问服务
  17. 蓝桥杯——罗马数字转换器
  18. vue 做登陆页面 ( 登陆成功后去掉注册和登陆按钮 显示用户名)
  19. Python 裁剪九宫格图片 —— 筑梦之路
  20. Android程序crash处理

热门文章

  1. 计算机图形学头歌实训平台作业OpenGL二维几何变换
  2. js判断移动端浏览器
  3. k8s——configmap-secret-nginx实验
  4. 浅谈安卓逆向协议(三)- 最右
  5. State 和 Status 傻傻分不清
  6. 唱吧mp3 mp4 免费提取
  7. 中望软件华东区技术部经理尚飞:中望设计云与制造大数据解决方案
  8. python多项式拟合_最小二乘法—多项式拟合非线性函数
  9. 欠下的技术债务总是要归还【天天乐学面经】
  10. HElib-源码示例CKKS操作