Django+ PowerShell 管理AD系统

QQ群里的Evan童鞋分享了一个很有意思的博客 http://note.youdao.com/noteshare?id=a60709c00fe88cd09155a2ef50815281  大概是如何利用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.psm1
start-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 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 %}
    <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 %}

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

时间: 2024-10-13 17:51:55

Django+ PowerShell 管理AD系统的相关文章

Powershell日常AD管理-1

PowerShell如今使用越来越频繁,例如管理员维护AD,需要将新建OU里的用户批量启用,当然这一点图形界面也可以做到,换一个要求,在AD管理中经常遇到的事情就是查询OU,用户,如果用户数量非常多的话这对于图形界面来说不大容易,比如需要查询域中所有的OU,或者某OU下的用户,Powershell可以很方便的统计这些庞大的信息 本章内容 1.查询域中所有OU,将名称属性导出 2.查询某OU下所有用户 3.查询单个用户属性,截取自己想要的值 接下来演示如何使用PowerShell完成AD日常管理,

Exchange 2013 PowerShell管理联系人&通讯组&资源邮箱

管理联系人 创建联系人,使用如下语法: New-MailContact -Alias rjones ` -Name "Rob Jones" ` -ExternalEmailAddress [email protected] ` -OrganizationalUnit sales 已启用邮箱的用户可以使用如下语法: New-MailUser -Name 'John Davis' ` -Alias jdavis ` -UserPrincipalName [email protected]

Powershell管理系列(二十六)PowerShell操作之批量导出&导入邮箱

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 项目中有时候做跨林邮箱迁移的时候,条件不成熟,比如安全考虑或者其他考虑,不能做双林信任,这样就提出了一个问题,历史邮件需要使用的话怎么办,一个简单高效的解决办法就是从源森林批量导出邮件为.pst文件,在批量导入到目的域森林,具体操作如下: 1.赋予管理账号邮件导入导出权限,命令如下: cls whoami New-Manageme

通过PowerShell获取Windows系统密码Hash

当你拿到了系统控制权之后如何才能更长的时间内控制已经拿到这台机器呢?作为白帽子,已经在对手防线上撕开一个口子,如果你需要进一步扩大战果,你首先需要做的就是潜伏下来,收集更多的信息便于你判断,便于有更大的收获.用什么方法才能有尽可能高的权限,同时能更有效的隐藏自己,是留webshell,留后门,种木马还是Rootkit?webshell,哪怕是一句话木马都很容易被管理员清除,放了木马,也容易被有经验的管理员查出,不管是早期自己创建进程,进程被干掉就完了,还是注入进程的木马,或者是以服务自启动的木马

Django后台管理界面

之前的几篇记录了模板视图.模型等页面展示的相关内容,这篇主要写一下后台admin管理界面的内容. 激活管理界面 Django管理站点完全是可选择的,之前我们是把这些功能给屏蔽掉了.记得上篇中Django模型模型安装小结中,我们把settings.py中的部分内容屏蔽了,并添加了一个app,如下 1 INSTALLED_APPS = ( 2 ## 'django.contrib.admin', 3 ## 'django.contrib.auth', 4 ## 'django.contrib.con

Azure运维系列 3:安装和使用Azure PowerShell管理云

前面讲到了很多的管理方式,包括Azure中国最近更新的预览版管理门户和Azure云助理,都是非常不错的管理Azure的方式,今天我们再来介绍一种更加高效的管理方式Azure PowerShell.熟悉命令行的朋友都知道,Linux之所以那么好用是因为其强大的命令行工具,可以简单直接的管理我们的服务器.应用等.然而在很早之前微软也推出了自己的命令行渠道,没错就是我们大名鼎鼎的PowerShell. 为什么说PowerShell那么强大呢?因为从Windows 8之后的产品.2007之后的服务端系统

django站点管理

一.启动django站点管理功能 1.关于django.contrib包   包含了django自带的众多附加组件,主要包括:   1)管理工具: django.contrib.admin   2)用户鉴别系统:django.contrib.auth   3)支持匿名会话:django.contrib.sessions   4)用户评注系统:django.contrib.comments 2.settings.py中启动管理工具所需要的包 INSTALLED_APPS = ( 'django.c

Django -- admin管理工具

对于某类网站,管理界面是很重要的.他可以添加.编辑.删除网站内容,但是创建管理界面繁琐而重复,并且界面千篇一律:django用不能再少的代码帮你做了这些繁琐的工作:它读取你模式中的元数据,然后提供给你强大并能立即工作的界面. django.contrib是一套庞大的功能集,django基本代码的组成部分,它包含: 用户鉴别系统(django.contrib.auth) 支持匿名会话(django.contrib.sessioins) 用户评注系统(django.contrib.comments)

6Python全站之路系列之Django站点管理

Python全栈之路系列之Django站点管理 站点管理也称之为后台,比如说博客的后台你可以发布文章,修改文章,修改频道等信息. Django使用极少的代码为你做了一切,在Django中创建管理界面已经不是问题,它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作. django.contrib包 Django自动管理工具是django.contrib的一部分.django.contrib是一套庞大的功能集,它是Django基本代码的组成部分,Django框