Django+ PowerShell 管理AD系统

简介:

如何利用Flask 调用 Powershell API 实现的一个运维管理系统。


豆子依葫芦画瓢,用Django成功地实现了有一个简单的界面。 直接用Bootstrap模板弄个前端页面,Django 框架,然后后台调用PowerShell API实现查询。


下面是一个简单的demo,输入AD的组,显示组成员


78c29eb3691e6278c898e30de8ff3b02.png


Django没啥好说的,基本的MTV框架流程,主要比较好玩的是这个PowerShell API的模块。网上有现成的HttpListener的模块可以下载,QQ群里的童鞋做了些修改,去掉了一个验证的功能,如果有需求,可以自己手动添加一个函数进去。我这里图省事是直接用的去验证的版本。


这个模块下载导入之后就可以执行了,他提供了一个类似restful的接口来执行Powershell的命令,直接Http get请求对应的接口,然后返回json格式的结果

1
2
Import-Module  C:\users\yuan.li\Documents\GitHub\Powershell\HTTPListener.psm1
start-httplistener  -verb -Auth None


测试一下:

浏览器

50e5bcbc7fd0ffd4697128c38d85cc05.png

Python

c223bcd2dd23639ed0880f96e3fcbee5.png




值得一提的是,具体的Powershell命令放在哪里,我们可以在两个地方设置。一个是直接在uri里面 command=后面输入,简单的命令无所谓,但是如果命令很复杂很长的话,这里就不是太合适了;


另外一个方式是可以在HTTPListener的模块文件里面直接写个function,这样加载的时候一起放入内存了。command=后面直接跟函数名和参数就行了。

比如说:


1
2
3
function  search-adgroupmemeber( $group ){
     Get-ADGroupMember  $group  | select name, SamAccountName,Distinguishedname
}


那我直接调用

http://localhost:8888/?command=search-adgroupmemeber 'domain admins'


显示结果

e80f700b86b5cef3b1d3821326181bfb.png-wh_



okay,基本能工作了,那么在django上弄个界面看看吧


url.py 路由

1
url(r '^powershell' , views.powershell),


views.py 视图函数

1
2
3
4
5
6
7
8
9
10
11
12
import  requests
def  powershell(req):
     if  req.method = = "GET" :
         return  render(req, 'powershell.html' )
     elif  req.method = = "POST" :
         name = req.POST.get( "caption" )
         print (name)
         res = requests.get( "http://localhost:8888/?command=get-adgroupmember '%s' | select name, distinguishedname" % name)
         print (res)
         result = res.json()
         print (result)
         return  render(req, 'powershell.html' ,{ 'result' :result})


powershell.html 模板,这里我没用AJAX,就是直接form进行提交

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
{%  extends 'base.html' %}
{% block css %}
     < style >
         .go{
             width:20px;
              border: solid 1px;
             color: #66512c;
             display: inline-block;
             padding: 5px;
         }
         .pagination .page{
             border: solid 1px;
             color: #66512c;
             display: inline-block;
             padding: 5px;
             background-color: #d6dade;
             margin: 5px;
         }
         .pagination .page.active{
             background-color: black;
             color: white;
         }
         .hide{
             display: none;
         }
         .shade{
             position: fixed;
             top: 0;
             right: 0;
             left: 0;
             bottom: 0;
             background: black;
             opacity: 0.6;
             z-index: 100;
         }
         .add-modal,.edit-modal{
             position: fixed;
             height: 300px;
             width: 400px;
             top:100px;
             left: 50%;
             z-index: 101;
             border: 1px solid red;
             background: white;
             margin-left: -200px;
         }
         .group{
             margin-left: 20px;
             margin-bottom: 15px;
         }
     </ style >
{% endblock %}
{% block content %}
< h1  class = "page-header" >Powershell 测试页面</ h1 >
< h3  >查询用户组</ h3 >
             < form  method = "POST"  action = "/powershell" >
                 {% csrf_token %}
                 < input  type = "text"  name = "caption"  placeholder = "组名"  />
                 < input  type = "submit"  value = "查询" />
             </ form >
< br >
     < table  border = "1" >
         < thead >
             < tr >
                 < th >成员</ th >
                 < th >DN</ th >
                 < th >操作</ th >
             </ tr >
         </ thead >
         < tbody >
{% for items in result %}
     < tr  >
         < td >`items`.`name`</ td >
         < td >`items`.`distinguishedname`</ td >
         < td >< a  class ='update'>修改 | </ a >< a  class = "delete" >删除</ a ></ td >
     </ tr >
{% endfor %}
         </ tbody >
     </ table >
  
{% endblock %}
{% block title%}PowerShell{% endblock %}
{% block js%}
< script >
</ script >
{% endblock %}


这样一个查询效果就做出来了。






本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1979809,如需转载请自行联系原作者

目录
相关文章
|
16天前
|
监控 数据可视化 安全
AD域管理PowerShell常用命令总结
本文介绍了GET-ADUser命令在AD域管理中的多种应用场景,包括获取、过滤和导出用户信息至CSV文件。同时,推荐了卓豪ADManager Plus软件,该软件提供了批量用户与组管理、报表生成功能,极大简化了AD域的日常管理工作,提升了IT管理员的工作效率和准确性。
|
1月前
|
Python
Django 框架的路由系统
Django 框架的路由系统
48 6
|
2月前
|
机器学习/深度学习 数据处理 数据库
基于Django的深度学习视频分类Web系统
基于Django的深度学习视频分类Web系统
65 4
基于Django的深度学习视频分类Web系统
|
2月前
|
数据库 数据库管理 Python
#736421#基于django的个人博客系统
#736421#基于django的个人博客系统
46 4
#736421#基于django的个人博客系统
|
3月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
143 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
2月前
|
机器学习/深度学习 监控 数据挖掘
基于Django和百度飞桨模型的情感识别Web系统
基于Django和百度飞桨模型的情感识别Web系统
47 5
|
2月前
|
数据库 数据库管理 Python
#73623#基于django的园区对比系统
#73623#基于django的园区对比系统
43 4
|
2月前
|
数据库 数据安全/隐私保护 数据库管理
#099473#基于django的毕业生信息管理招聘系统
#099473#基于django的毕业生信息管理招聘系统
44 4
|
2月前
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
40 4
|
3月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
128 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面