栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django+ PowerShell 管理AD系统

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django+ PowerShell 管理AD系统


QQ群里的Evan童鞋分享了一个很有意思的博客 http://note.youdao.com/noteshare?id=a60709c00fe88cd09155a2ef50815281  大概是如何利用Flask 调用 Powershell API 实现的一个运维管理系统。

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

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

78c29eb3691e6278c898e30de8ff3b02.png

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

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

import-Module C:usersyuan.lidocumentsGitHubPowershellHTTPListener.psm1

start-httplistener -verb -Auth None

测试一下:

浏览器

50e5bcbc7fd0ffd4697128c38d85cc05.png

Python

c223bcd2dd23639ed0880f96e3fcbee5.png

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

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

比如说:

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 路由

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

views.py 视图函数

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进行提交

{%  extends 'base.html' %}

{% block css %}

   

        .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;

        }

   

{% endblock %}

{% block content %}

Powershell 测试页面

查询用户组

           


   

       

           

               

               

               

           

       

       

{% for items in result %}

   

       

       

       

   

{% endfor %}

       

   

成员DN操作
`items`.`name``items`.`distinguishedname`修改 | 删除

 

{% endblock %}

{% block title%}PowerShell{% endblock %}

{% block js%}

{% endblock %}

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

©著作权归作者所有:来自51CTO博客作者beanxyz的原创作品,如需转载,请注明出处,否则将追究法律责任


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/222449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号