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_switches = {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())