Sobes.tech
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())