主機管理+堡壘機系統開發:表結構設計
阿新 • • 發佈:2018-08-07
bsp http __str__ ipaddress color user del splay group
一、創建django項目和app web
二、主機表
1、主機表代碼:
"""存儲所有主機""" hostname = models.CharField(max_length=64) ip_addr = models.GenericIPAddressField(unique=True) port = models.PositiveSmallIntegerField(default=22) idc = models.ForeignKey("IDC") enabled = models.BooleanField(default=True) #是否已啟用,代表這臺機器是否能登陸 def __str__(self): return self.ip_addr
1、hostname需要唯一的?
它不一定唯一,有可能是重的
2、這臺機器的用戶名密碼要不要在這存?
不用,因為主機和用戶名密碼是一對多的 關系,一條存的下嗎?
是否已啟用,代表這臺機器是否能登陸
2、IDC表代碼
class IDC(models.Model): name = models.CharField(max_length=64,unique=True) def __str__(self): return self.name
三、主機組表
1、解決了什麽問題:
一個人管理500臺機器我給他一個一個添加嗎?,我是不是要創建一個主機組
2、主機表代碼
class HostGroup(models.Model): """主機組""" name = models.CharField(max_length=64, unique=True) hosts = models.ManyToManyField("Host") def __str__(self): return self.name
四、遠程用戶表
1、解決了什麽問題:
有些遠程的主機不能密鑰,所以必須存密碼
2、主機表代碼
class RemoteUser(models.Model): """存儲遠程用戶名密""" username = models.CharField(max_length=64) auth_type_choices = ((0,‘ssh/password‘),(1,‘ssh/key‘)) auth_type = models.SmallIntegerField(choices=auth_type_choices,default=0) password = models.CharField(max_length=128,blank=True,null=True) hosts = models.ManyToManyField("Host") def __str__(self): return "%s(%s)%s" %( self.username,self.get_auth_type_display(),self.password)
3、字段設計原因
1、username要不要唯一?
為什麽不用,這個賬戶裏面存的是多臺機器的用戶名密碼
2、可不可以有密鑰和密碼?
有些機器用密碼,有些機器用密碼,你總的區分吧!
3、password在這個存的是什麽格式的?
- 存的是什麽的密碼?遠程主機的你能在這加密嗎?
- 你輸入密碼的時候輸入的密文嗎?你知道你機器上的密文在哪嗎?你知道它的加密算法嗎?
- 你加密了之後傳給他,他認為是明文,然後他再加密一次。所以只能存明文
4、如果選擇是密鑰的時候?還需要存用戶名和密碼嗎?
不需要
六、堡壘機賬戶表
主機管理+堡壘機系統開發:表結構設計