[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管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的 ...
随机推荐
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
上篇博文[SSH进阶之路]Hibernate映射--一对一单向关联映射(五),我们介绍了一对一的单向关联映射,单向是指仅仅能从人(Person)这端载入身份证端(IdCard),可是反过来.不能从身份 ...
- swift - UIButton 的用法
1,按钮的创建 (1)按钮有下面四种类型: contactAdd:前面带“+”图标按钮,默认文字颜色为蓝色,有触摸时的高亮效果 detailDisclosure:前面带“!”图标按钮,默认文字颜色为蓝 ...
- Delphi数据类型转换
[转]Delphi数据类型转换 DateTimeToFileDate 将DELPHI的日期格式转换为DOS的日期格式 DateTimeToStr 将日期时间格式 ...
- Android 菜单动态变化【添加或去除】
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android: ...
- 【BZOJ2300】[HAOI2011]防线修建 set维护凸包
[BZOJ2300][HAOI2011]防线修建 Description 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可 ...
- java的list集合操作List<T>转化List<Long>
java的list集合操作List<T>转化List<Long> package com.google.common.collect; import com.google.co ...
- applicationContext.xml的文件位置就可以有两种默认实现
ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在web ...
- OneThink生成分类树方法(list_to_tree)使用!
具体方法: Application / Common / Common / function.php 下的 224行: function list_to_tree($list, $pk='id', $ ...
- 最小生成树的变形(次小生成树hdu4081)
hdu4081 Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- FZU 2107 Hua Rong Dao(dfs)
Problem 2107 Hua Rong Dao Accept: 318 Submit: 703 Time Limit: 1000 mSec Memory Limit : 32768 KB Prob ...