Intern
1. Escrever um objeto Python "switches" em formato YAML 2. Transformar "switches" de modo que fiquem apenas os switches "cisco" 3. Na comando standardise_macaddr obter o último endereço do host na rede "172.16.0.0/28" 4. Analisar "dhcp_snooping_table" numa lista de dicionários com o seguinte formato: ```python dhcp_snooping_table_parsed = [ { "mac": "00:E9:BC:3F:A6:50", "ip": "100.1.1.6", "interface": "FastEthernet0/20", }, { "mac": "00:E9:22:11:A6:50", "ip": "100.1.1.7", "interface": "FastEthernet0/21", } ] ``` 5. Escrever uma classe "NetworkSubnet" que tenha 2 métodos: - get_subnet - devolve a primeira sub-rede disponível do comprimento especificado como um objeto da classe IPv4Network - show_network_pool - devolve uma lista de sub-redes disponíveis
sobes.tech IA
Resposta da IA
yaml interruptores: cisco1: fornecedor: cisco modelo: 2960 ip: 10.0.0.1 cisco2: fornecedor: cisco modelo: 3750 ip: 10.0.0.2 hp1: fornecedor: hp modelo: 1920 ip: 10.0.0.3
---
# Filtragem apenas de switches cisco
```python
import yaml
with open('switches.yaml') as f:
switches = yaml.safe_load(f)
switches_cisco = {k: v for k, v in switches['switches'].items() if v['fornecedor'] == 'cisco'}
Obter o último endereço do host na rede 172.16.0.0/28
import ipaddress
network = ipaddress.IPv4Network('172.16.0.0/28')
último_host = str(list(network.hosts())[-1])
print(último_host) # 172.16.0.14
Análise da tabela dhcp_snooping em uma lista de dicionários
dhcp_snooping_table = '''
00:E9:BC:3F:A6:50 100.1.1.6 FastEthernet0/20
00:E9:22:11:A6:50 100.1.1.7 FastEthernet0/21
'''
linhas = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
para linha em linhas:
mac, ip, interface = linha.split()
dhcp_snooping_table_parsed.append({
'mac': mac,
'ip': ip,
'interface': interface
})
Classe NetworkSubnet
import ipaddress
class NetworkSubnet:
def __init__(self, rede):
self.rede = ipaddress.IPv4Network(rede)
self.sous_reseaux_utilises = []
def get_subnet(self, prefixo):
for sous_reseau in self.rede.subnets(new_prefix=prefixo):
if sous_reseau not in self.sous_reseaux_utilises:
self.sous_reseaux_utilises.append(sous_reseau)
return sous_reseau
return None
def show_network_pool(self):
todas_as_sous_rede = list(self.rede.subnets())
disponiveis = [s for s in todas_as_sous_rede if s not in self.sous_reseaux_utilises]
return disponiveis
# Exemplo de uso
net = NetworkSubnet('192.168.0.0/24')
sous_rede = net.get_subnet(28)
print(sous_rede) # 192.168.0.0/28
print(net.show_network_pool())