[svc]堡垒机模型设计初步
models
from django.contrib.auth.models import AbstractUser
from django.db import models
# Create your models here.
class RemoteUser(models.Model):
"""主机账号"""
auth_type = models.SmallIntegerField(choices=((0, 'sshpass'), (1, 'sshkey')), default=0)
username = models.CharField(max_length=30)
password = models.CharField(max_length=60, blank=True, null=True)
class Meta:
unique_together = ("auth_type", "username", "password")
verbose_name = "主机账号"
verbose_name_plural = verbose_name
def __str__(self):
return "%s/%s" % (self.username, self.password)
class HostGroup(models.Model):
"""主机组"""
name = models.CharField(max_length=30)
# hosts = models.ForeignKey(Hosts, on_delete=models.CASCADE)
class Meta:
verbose_name = "主机组"
verbose_name_plural = verbose_name
def __str__(self):
return "%s" % (self.name)
class Hosts(models.Model):
"""主机"""
name = models.CharField(max_length=30, unique=True)
ip = models.GenericIPAddressField(unique=True)
port = models.SmallIntegerField(default=22)
idc = models.ForeignKey("IDC", on_delete=models.CASCADE)
# remote_user = models.ManyToManyField(RemoteUser)
host_group = models.ForeignKey(HostGroup, on_delete=models.CASCADE)
class Meta:
verbose_name = "主机"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class HostToRemoteUser(models.Model):
"""主机和账号绑定"""
host = models.ForeignKey(Hosts, on_delete=models.CASCADE)
remote_user = models.ForeignKey(RemoteUser, on_delete=models.CASCADE)
class IDC(models.Model):
name = models.CharField(max_length=30, unique=True)
class Meta:
verbose_name = "IDC机房"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# class UserProfile(AbstractUser):
# # host_to_remote_users = models.ManyToManyField("HostToRemoteUser", blank=True, null=True)
# # host_groups = models.ManyToManyField("HostGroup", blank=True, null=True)
# tel = models.CharField(max_length=30)
#
# class Meta:
# verbose_name = "用户信息"
# verbose_name_plural = verbose_name
#
# def __str__(self):
# return self.username
admin
from django.contrib import admin
from .models import RemoteUser, Hosts, HostGroup, IDC, HostToRemoteUser
# Register your models here.
class RemoteUserAdmin(admin.ModelAdmin):
"""主机账号"""
list_display = ("username", "password")
class HostsAdmin(admin.ModelAdmin):
"""主机"""
list_display = ("name", "ip", "port","idc","host_group")
class HostGroupAdmin(admin.ModelAdmin):
"""主机组"""
list_display = ("name",)
class IDCAdmin(admin.ModelAdmin):
"""主机组"""
list_display = ("name",)
class HostToRemoteUserAdmin(admin.ModelAdmin):
"""主机组"""
list_display = ("host", "remote_user")
admin.site.register(RemoteUser, RemoteUserAdmin)
admin.site.register(Hosts, HostsAdmin)
admin.site.register(HostGroup, HostGroupAdmin)
admin.site.register(HostToRemoteUser, HostToRemoteUserAdmin)
admin.site.register(IDC, IDCAdmin)
[svc]堡垒机模型设计初步的更多相关文章
- IronFort---基于Django和Websocket的堡垒机
WebSSH有很多,基于Django的Web服务也有很多,使用Paramiko在Python中进行SSH访问的就更多了.但是通过gevent将三者结合起来,实现通过浏览器访问的堡垒机就很少见了.本文将 ...
- 开发基于Django和Websocket的堡垒机
WebSSH有很多,基于Django的Web服务也有很多,使用Paramiko在Python中进行SSH访问的就更多了.但是通过gevent将三者结合起来,实现通过浏览器访问的堡垒机就很少见了.本文将 ...
- Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....
一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...
- Python之路:堡垒机实例
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 ...
- python远程连接paramiko 模块和堡垒机实现
paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...
- python学习笔记-(十三)堡垒机
1.课前准备: 本次学习堡垒机相关知识:之前,需要安装Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. 前提: python3.5程序安装到默认路径下并已添加pa ...
- Python开发【第九章】:堡垒机实例
一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作 模块安装 C:\Program Files\Python 3.5\Scri ...
- 利用paramiko模块实现堡垒机+审计功能
paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+ ...
- Python之路-python(堡垒机)
运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的 ...
随机推荐
- vs2013配置opencv3.2.0
工具/原料 l VS2013 l OpenCV3.20http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-win/3.2.0/op ...
- mysql中参数--init-file的作用是什么呢?
需求描述: 今天在修改测试环境mysql数据库中root用户密码的时候,用到了--init-file参数, 所以,就在这里说下该参数的作用. 概念解释: 参数:--init-file=file_nam ...
- POJ 1742 Coins(多重背包, 单调队列)
Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar. ...
- echo\awk\sed\tee\curl的使用-shell
echo的使用:http://man.linuxde.net/echo awk的使用:http://man.linuxde.net/awk sed的使用:http://man.linuxde.net/ ...
- Python2 与 Python3 区别
print 用法不同:在 Python2 中,print 用法为 print "Hello World"在 Python3 中,print 用法为 print("Hell ...
- HTTP 基础术语
URI 和 URL:URI用于标记一个网络资源,URL则表示这个网络资源的访问地址,详细说明 超文本:普通的一段文字叫做文本,如果给这段文字加上超链接,那么就叫做超文本,HTML 就是超文本标记语言 ...
- vertical-align负值和margin-bottom负值的区别
先看一下vertical-align在W3C当中的值有哪一些: 可是它有数值这一说确实很少提起,我们来看这么一段代码: <!DOCTYPE html> <html lang=&quo ...
- 使用NSTimer实现动画
1.新建empty AppLication,添加HomeViewController页面, iphone.png图片 2.在 HomeViewController.xib中添加Image View,并 ...
- Size Balanced Tree
Size Balanced Tree(SBT)是目前速度最快的平衡二叉搜索树,且能够进行多种搜索操作,区间操作:和AVL.红黑树.伸展树.Treap类似,SBT也是通过对节点的旋转来维持树的平衡,而相 ...
- 配置Python实战开发环境
一.安装Python和easy_install 和pip 新版本的linux下面应该带有这些环境,没有自带的话可以查找google配置. 二.配置python运行的虚拟化环境: 好处:Python的库 ...