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]堡垒机模型设计初步的更多相关文章

  1. IronFort---基于Django和Websocket的堡垒机

    WebSSH有很多,基于Django的Web服务也有很多,使用Paramiko在Python中进行SSH访问的就更多了.但是通过gevent将三者结合起来,实现通过浏览器访问的堡垒机就很少见了.本文将 ...

  2. 开发基于Django和Websocket的堡垒机

    WebSSH有很多,基于Django的Web服务也有很多,使用Paramiko在Python中进行SSH访问的就更多了.但是通过gevent将三者结合起来,实现通过浏览器访问的堡垒机就很少见了.本文将 ...

  3. Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....

    一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...

  4. Python之路:堡垒机实例

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 ...

  5. python远程连接paramiko 模块和堡垒机实现

    paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...

  6. python学习笔记-(十三)堡垒机

    1.课前准备: 本次学习堡垒机相关知识:之前,需要安装Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. 前提: python3.5程序安装到默认路径下并已添加pa ...

  7. Python开发【第九章】:堡垒机实例

    一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作 模块安装 C:\Program Files\Python 3.5\Scri ...

  8. 利用paramiko模块实现堡垒机+审计功能

    paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+ ...

  9. Python之路-python(堡垒机)

    运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的 ...

随机推荐

  1. Facebook开源技术识别网购评论

    1.自然语言处理2.情感分析3.监督学习模型4.词向量 5.fasttext 汉藏语系,是语言系属分类(Language family)的一种,分为汉语族和藏缅语族,是用汉语和藏语的名称概括与其有亲属 ...

  2. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserDao' def

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserDao' def ...

  3. complex()

    complex() 用于将一个对象转换为复数 In [1]: complex(123) # 将整数转换为复数 Out[1]: (123+0j) In [2]: complex(') # 将纯数字的字符 ...

  4. 在js中通过call或者apply实现继承

    通过call或者apply可以实现函数里面this的改变,利用这一特点,可以实现继承 代码如下所示: /*父类*/ function Parent(add,net,no,teacher) { this ...

  5. hive 客户端执行select count(1) from t_sz01

    yarn-site.xml配置错误 yarn.nodemanager.aux-services 中的-原先配置为_ 导致错误......

  6. Postgresql 创建主键并设置自动递增的三种方法

    Postgresql 有以下三种方法设置主键递增的方式,下面来看下相同点和不同点. --方法一create table test_a (  id serial,  name character var ...

  7. 日记整理---->2016-11-22

    这里记录一些关于jquery的一些知识.这里面主要是$().method方法的书写框架以及jquery中each函数的使用.等待太久得来的东西,多半已经不是当初想要的样子了. 一.基于$().meth ...

  8. HTTP/2笔记之消息交换

    前言 无论是HTTP/1.*还是HTTP/2,HTTP的基本语义是不变的,比如方法语义(GET/PUST/PUT/DELETE),状态码(200/404/500等),Range Request,Cac ...

  9. Excel 中如何快速统计一列中相同字符的个数(函数法)

    https://jingyan.baidu.com/article/6d704a132ea17328da51ca78.html 通过excel快速统计一列中相同字符的个数,如果很少,你可以一个一个数. ...

  10. CentOS下安装cvechecker并进行主机基线安全检查

    一.cvechecker的安装 1.首先下载cvechecker并解压该文件: cd /home/username mkdir cve wget https://raw.githubuserconte ...