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())