博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django+ PowerShell 管理AD系统
阅读量:6000 次
发布时间:2019-06-20

本文共 2125 字,大约阅读时间需要 7 分钟。

QQ群里的Evan童鞋分享了一个很有意思的博客   大概是如何利用Flask 调用 Powershell API 实现的一个运维管理系统。

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

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

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

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

Import-Module C:\users\yuan.li\Documents\GitHub\Powershell\HTTPListener.psm1start-httplistener -verb -Auth None

测试一下:

浏览器

Python

值得一提的是,具体的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'

显示结果

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

url.py 路由

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

views.py 视图函数

import requestsdef 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 %}    {% endblock %}{% block content %}
Powershell 测试页面
查询用户组            
                {% csrf_token %}                
                
            
    
                                    成员                DN                操作                            {% for items in result %}    
        `items`.`name`        `items`.`distinguishedname`        
修改 | 
删除    {% endfor %}             {% endblock %}{% block title%}PowerShell{% endblock %}{% block js%}
{% endblock %}

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

转载地址:http://apwmx.baihongyu.com/

你可能感兴趣的文章
Microsoft JScript 运行时错误
查看>>
JavaWeb项目:Shiro实现简单的权限控制(整合SSM)
查看>>
error C3872: "0xa0": 此字符不允许在标识符中使用
查看>>
Hadoop源码研究笔记--20120725--主要组成包
查看>>
.GB级数据库分区实现高性能
查看>>
开源项目spring-shiro-training思维导图
查看>>
WPF——TaskBarIconOverlay(任务栏图标叠加)
查看>>
去除a标签链接触摸时产生边框
查看>>
[转载]Huffman编码压缩算法
查看>>
webkit支持跨域的方法
查看>>
如何测试php是否连接mysql成功
查看>>
【前缀思想】二叉树中所有距离为 K 的结点
查看>>
基于Abp的WebApi容器
查看>>
【leetcode】991. Broken Calculator
查看>>
SQL Server登录 18456错误
查看>>
flask小例
查看>>
[报到] 发布个自己修改的联动下拉菜单 (无限级、数据库、初始值.)
查看>>
CentOS下yum命令详解
查看>>
Tengine——安装起来真费劲
查看>>
音视频系列之iOS: 音频采集 AudioUnit
查看>>