Sobes.tech
Intern

1. Schreiben Sie ein Python-Objekt "switches" im YAML-Format 2. Transformieren Sie "switches" so, dass nur "cisco"-Switches übrig bleiben 3. In dem Befehl standardise_macaddr die letzte Host-Adresse im Netzwerk "172.16.0.0/28" erhalten 4. Analysieren Sie "dhcp_snooping_table" in eine Liste von Wörterbüchern im folgenden 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. Schreiben Sie eine Klasse "NetworkSubnet" mit 2 Methoden: - get_subnet - gibt das erste verfügbare Subnetz der angegebenen Länge als IPv4Network-Objekt zurück - show_network_pool - gibt eine Liste der verfügbaren Subnetze zurück

sobes.tech KI

Antwort von AI

yaml schalter: cisco1: hersteller: cisco modell: 2960 ip: 10.0.0.1 cisco2: hersteller: cisco modell: 3750 ip: 10.0.0.2 hp1: hersteller: hp modell: 1920 ip: 10.0.0.3


---

# Nur Cisco-Switches filtern

```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['hersteller'] == 'cisco'}

Letzte Hostadresse im Netzwerk 172.16.0.0/28 erhalten

import ipaddress

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

Parsing der dhcp_snooping_table in eine Liste von Dictionaries

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

Zeilen = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
für Zeile in Zeilen:
    mac, ip, interface = Zeile.split()
    dhcp_snooping_table_parsed.append({
        'mac': mac,
        'ip': ip,
        'interface': interface
    })

Klasse NetworkSubnet

import ipaddress

class NetworkSubnet:
    def __init__(self, netz):
        self.netz = ipaddress.IPv4Network(netz)
        self.genutzte_subnetze = []

    def get_subnet(self, prefix):
        for subnet in self.netz.subnets(new_prefix=prefix):
            if subnet not in self.genutzte_subnetze:
                self.genutzte_subnetze.append(subnet)
                return subnet
        return None

    def show_network_pool(self):
        alle_subnetze = list(self.netz.subnets())
        verfugbare = [s for s in alle_subnetze if s not in self.genutzte_subnetze]
        return verfugbare

# Beispiel
net = NetworkSubnet('192.168.0.0/24')
subnetz = net.get_subnet(28)
print(subnetz)  # 192.168.0.0/28
print(net.show_network_pool())