Sobes.tech
Intern

1. Scrieți un obiect Python "switches" în format YAML 2. Transformați "switches" astfel încât să rămână doar switch-urile "cisco" 3. În comanda standardise_macaddr, obțineți ultima adresă a gazdei în rețeaua "172.16.0.0/28" 4. Analizați "dhcp_snooping_table" într-o listă de dicționare în următorul format: ```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. Scrieți o clasă "NetworkSubnet" care are 2 metode: - get_subnet - returnează prima subrețea disponibilă de lungime specificată ca obiect al clasei IPv4Network - show_network_pool - returnează o listă de subrețele disponibile

sobes.tech AI

Răspuns de la AI

yaml comutatoare: cisco1: furnizor: cisco model: 2960 ip: 10.0.0.1 cisco2: furnizor: cisco model: 3750 ip: 10.0.0.2 hp1: furnizor: hp model: 1920 ip: 10.0.0.3


---

# Filtrare doar a switch-urilor cisco

```python
import yaml

with open('switches.yaml') as f:
    switches = yaml.safe_load(f)

switchuri_cisco = {k: v for k, v in switches['switches'].items() if v['furnizor'] == 'cisco'}

Obțineți ultima adresă a gazdei în rețeaua 172.16.0.0/28

import ipaddress

network = ipaddress.IPv4Network('172.16.0.0/28')
ultima_gazda = str(list(network.hosts())[-1])
print(ultima_gazda)  # 172.16.0.14

Analiza tabelului dhcp_snooping în lista de dicționare

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
'''

linii = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
for linie in linii:
    mac, ip, interface = linie.split()
    dhcp_snooping_table_parsed.append({
        'mac': mac,
        'ip': ip,
        'interface': interface
    })

Clasa NetworkSubnet

import ipaddress

class NetworkSubnet:
    def __init__(self, rețea):
        self.rețea = ipaddress.IPv4Network(rețea)
        subrețele_utilizate = []

    def get_subnet(self, prefix):
        for subrețea in self.rețea.subnets(new_prefix=prefix):
            if subrețea not in subrețele_utilizate:
                subrețele_utilizate.append(subrețea)
                return subrețea
        return None

    def show_network_pool(self):
        toate_subrețelele = list(self.rețea.subnets())
        disponibile = [s for s in toate_subrețelele if s not in subrețele_utilizate]
        return disponibile

# Exemplu de utilizare
net = NetworkSubnet('192.168.0.0/24')
subnet = net.get_subnet(28)
print(subnet)  # 192.168.0.0/28
print(net.show_network_pool())