-
Notifications
You must be signed in to change notification settings - Fork 0
/
host.py
105 lines (94 loc) · 2.97 KB
/
host.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
from conversoes import Converter
from formatando_ips import Format
"""Modulo host.py:
Este modulo fornece as ferramentas necessarioas para calcular os host, ip primarios, e ip broadcast de uma rede
ipv4
"""
class Host:
"""Classe Host:
Esta classe comporta funçõe estaticas destinadas ao calculo de hosts, ip broadcast e ip primario de redes ipv4
"""
@staticmethod
def calc_hosts(ip, pre):
"""Função calc_hosts
Esta função retorna a quantidade de hosts disponiveis para configurar novos dispositivos na rede
:param: ip
:type: string
:param: pre
:type: int
:return: qtd_hosts
:type: int
"""
ip_bin = Converter.convert_bin(ip)
listcomp = [x for x in ip_bin for x in x]
listtcomp2 = [1 for x in range(pre)]
v1 = len(listcomp)
v2 = len(listtcomp2)
v3 = v1 - v2
for i in range(v3):
listtcomp2.append(0)
qtd_hosts= (2 ** v3) - 2
return qtd_hosts
#retorna o ip broadcast da rede
@staticmethod
def calc_broadcast(ip, pre):
""" função calc_broadcast:
Esta funçao retorna o ip broadcast da rede que estamos calculando
:param: ip
:type: string
:param: pre
:type: int
:return:ip: o ip retornado é resultado do calculo do ip recebido como parametro, modificado
atraves de metodo de string
:type: string
"""
lista =[128,64,32,16,8,4,2,1]
listtcomp2 = [0 for x in range(pre)]
index =len(listtcomp2)-32
soma = 0
for i,x in enumerate(lista,-8):
if i>=index:
soma+=x
ip = Format.format_ip(ip)
ip[-1] = soma
ip = str(ip)
ip = ip.replace(',','.')
ip = ip.replace('[','')
ip = ip.replace(']', '')
ip = ip.replace(' ','')
return ip
@staticmethod
def firs_ip(ip, pre):
""" função first_ip:
Esta funçao retorna o primeiro ip da rede que estamos calculando
:param: ip
:type: string
:param: pre
:type: int
:return:ip: o ip retornado é resultado do calculo do ip recebido como parametro, modificado
atraves de metodo de string
:type: string
"""
lista = [128, 64, 32, 16, 8, 4, 2, 1]
listtcomp2 = [0 for x in range(pre)]
index = len(listtcomp2) - 32
soma = 0
for i, x in enumerate(lista, -8):
if i >= index:
soma += x
soma = soma-(soma-1)
ip = Format.format_ip(ip)
ip[-1] = soma
ip = str(ip)
ip = ip.replace(',', '.')
ip = ip.replace('[', '')
ip = ip.replace(']', '')
ip = ip.replace(' ', '')
return ip
if __name__=='__main__':
hosts = Host.calc_hosts('10.20.12.4',26)
print(hosts)
broad= Host.calc_broadcast('10.20.12.4',26)
print(broad)
first = Host.firs_ip('10.20.12.4',26)
print(first)