Sobes.tech
Intern

1. Напишете Python обект "switches" във формат YAML 2. Преобразувайте "switches" така, че да останат само "cisco" комутатори 3. В командата standardise_macaddr получете последния адрес на хоста в мрежата "172.16.0.0/28" 4. Анализирайте "dhcp_snooping_table" в списък от речници във формат: ```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. Напишете клас "NetworkSubnet", който има 2 метода: - get_subnet - връща първата налична подсистема с дължина, зададена като обект на класа IPv4Network - show_network_pool - връща списък с наличните подсистеми

sobes.tech AI

Отговор от AI

yaml превключватели: cisco1: доставчик: cisco модел: 2960 ip: 10.0.0.1 cisco2: доставчик: cisco модел: 3750 ip: 10.0.0.2 hp1: доставчик: hp модел: 1920 ip: 10.0.0.3


---

# Филтриране само на cisco превключватели

```python
import yaml

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

cisco_превключватели = {k: v for k, v in switches['switches'].items() if v['доставчик'] == 'cisco'}

Получаване на последния адрес на хоста в мрежата 172.16.0.0/28

import ipaddress

network = ipaddress.IPv4Network('172.16.0.0/28')
последен_хост = str(list(network.hosts())[-1])
print(последен_хост)  # 172.16.0.14

Анализ на таблицата dhcp_snooping_table в списък от речници

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

редове = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
за ред в редове:
    mac, ip, interface = ред.split()
    dhcp_snooping_table_parsed.append({
        'mac': mac,
        'ip': ip,
        'interface': interface
    })

Клас NetworkSubnet

import ipaddress

class NetworkSubnet:
    def __init__(self, мрежа):
        self.мрежа = ipaddress.IPv4Network(мрежа)
        използвани_подмрежи = []

    def get_subnet(self, префикс):
        for подмрежа in self.мрежа.subnets(new_prefix=префикс):
            if подмрежа not in използвани_подмрежи:
                използвани_подмрежи.append(подмрежа)
                return подмрежа
        return None

    def show_network_pool(self):
        всички_подмрежи = list(self.мрежа.subnets())
        налични = [s for s in всички_подмрежи if s not in използвани_подмрежи]
        return налични

# Пример за използване
net = NetworkSubnet('192.168.0.0/24')
подмрежа = net.get_subnet(28)
print(подмрежа)  # 192.168.0.0/28
print(net.show_network_pool())