Sobes.tech
Intern

1. Python nesnesi "switches" YAML formatında yazın 2. "switches" üzerinde dönüşüm yapın, böylece sadece "cisco" anahtarları kalır 3. standardise_macaddr komutunda, "172.16.0.0/28" ağındaki son ana bilgisayar adresini alın 4. "dhcp_snooping_table"'ı aşağıdaki biçimde sözlükler listesine ayrıştırın: ```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" adlı bir sınıf yazın, bu sınıfın 2 metodu olsun: - get_subnet - belirtilen uzunluktaki ilk kullanılabilir alt ağı IPv4Network sınıfı nesnesi olarak döndürür - show_network_pool - kullanılabilir alt ağların listesini döndürür

sobes.tech yapay zeka

AI'dan gelen yanıt

yaml anahtarlar: cisco1: satıcı: cisco model: 2960 ip: 10.0.0.1 cisco2: satıcı: cisco model: 3750 ip: 10.0.0.2 hp1: satıcı: hp model: 1920 ip: 10.0.0.3


---

# Sadece cisco anahtarlarını filtreleme

```python
import yaml

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

cisco_switches = {k: v for k, v in switches['switches'].items() if v['satıcı'] == 'cisco'}

172.16.0.0/28 ağında son ana bilgisayar adresini alma

import ipaddress

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

dhcp_snooping_table'ı sözlükler listesine ayrıştırma

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

satırlar = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
for satır in satırlar:
    mac, ip, interface = satır.split()
    dhcp_snooping_table_parsed.append({
        'mac': mac,
        'ip': ip,
        'interface': interface
    })

NetworkSubnet sınıfı

import ipaddress

class NetworkSubnet:
    def __init__(self, ağ):
        self.ağ = ipaddress.IPv4Network(ağ)
        kullanılan_alt_ağlar = []

    def get_subnet(self, prefixlen):
        for alt_ağ in self.ağ.subnets(new_prefix=prefixlen):
            if alt_ağ not in kullanılan_alt_ağlar:
                kullanılan_alt_ağlar.append(alt_ağ)
                return alt_ağ
        return None

    def show_network_pool(self):
        tüm_alt_ağlar = list(self.ağ.subnets())
        kullanılabilir = [s for s in tüm_alt_ağlar if s not in kullanılan_alt_ağlar]
        return kullanılabilir

# Kullanım örneği
net = NetworkSubnet('192.168.0.0/24')
alt_ağ = net.get_subnet(28)
print(alt_ağ)  # 192.168.0.0/28
print(net.show_network_pool())