[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管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的 ...
随机推荐
- Recurrent Neural Network Language Modeling Toolkit代码学习
Recurrent Neural Network Language Modeling Toolkit 工具使用点击打开链接 本博客地址:http://blog.csdn.net/wangxingin ...
- 【RF库Collections测试】Dictionary Should Not Contain Key
Name:Dictionary Should Not Contain KeySource:Collections <test library>Arguments:[ dictionary ...
- /etc/services
/etc/services文件是记录网络服务名和它们对应使用的端口号及协议,很多的系统程序要使用这个文件.一般情况下,不要修改该文件的内容,否则可能会造成端口冲突 常见的服务如下,各个字段分别表示:s ...
- php学习八:封装
一:在php中,用class关键字来创建一个类,即进行封装:在类里面有成员属性和方法行为组成: 1.成员属性:用关键字var来声明,可以给初始值也可以不给;现在var废弃,用public来声明,pub ...
- 拼图的几个网上找到的Demo
东西就直接放到云盘里了 https://yunpan.cn/ck8eCzJe9Pknm 访问密码 ee53
- 设计模式之抽象工厂模式(Java实现)
“上次是我的不对,贿赂作者让我先讲来着,不过老婆大人大人有大量,不与我计较,这次还让我先把上次未讲完的应用场景部分给补充上去,有妻如此,夫复何求.”(说完,摸了摸跪的发疼的膝盖,咳咳,我发四我没笑!真 ...
- ubuntu 14 root 账户 启用与ssh登录
ubuntu 14.04 root用户登录 开启root帐号的方法: 为了启用root 帐号(也就是设置一个口令)使用: sudo passwd root 当你使用完毕后屏蔽root帐号使用: sud ...
- c# Socket通信基础
一.IP地址操作类 1.IPAddress类 a.在该类中有一个 Parse()方法,可以把点分的十进制IP表示转化成IPAddress类,方法如下: IPAddress address = I ...
- HTML标签img--改变图片尺寸
转自:https://blog.csdn.net/u012377333/article/details/50508484 1.统一大小? 我的网页上面有许多的图片,有的大,有的小,我想如果图片大的实现 ...
- UNIX的插头问题
UNIX的插头问题 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 你负责为联合国互联网执行组织(UNIX)的周年会议布置会议室. ...