Sobes.tech
Intern

1. Python объектін YAML форматында "switches" деп жазыңыз 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())