Intern
1. Γράψτε ένα αντικείμενο Python "switches" σε μορφή YAML 2. Μετατρέψτε το "switches" έτσι ώστε να απομένουν μόνο τα "cisco" switches 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 АИ
Одговор од АИ
yaml prekidači: cisco1: dobavljač: cisco model: 2960 ip: 10.0.0.1 cisco2: dobavljač: cisco model: 3750 ip: 10.0.0.2 hp1: dobavljač: hp model: 1920 ip: 10.0.0.3
---
# Filtriranje samo cisco prekidača
```python
import yaml
with open('switches.yaml') as f:
switches = yaml.safe_load(f)
cisco_prekidači = {k: v for k, v in switches['switches'].items() if v['dobavljač'] == 'cisco'}
Dobijanje poslednje adrese hosta u mreži 172.16.0.0/28
import ipaddress
network = ipaddress.IPv4Network('172.16.0.0/28')
poslednji_host = str(list(network.hosts())[-1])
print(poslednji_host) # 172.16.0.14
Analiza tabele dhcp_snooping_table u listu rečnika
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
'''
redovi = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
za red u redove:
mac, ip, interface = red.split()
dhcp_snooping_table_parsed.append({
'mac': mac,
'ip': ip,
'interface': interface
})
Klasa NetworkSubnet
import ipaddress
class NetworkSubnet:
def __init__(self, mreža):
self.mreža = ipaddress.IPv4Network(mreža)
korišćene_podmreže = []
def get_subnet(self, prefiks):
for podmreža in self.mreža.subnets(new_prefix=prefiks):
if podmreža not in korišćene_podmreže:
korišćene_podmreže.append(podmreža)
return podmreža
return None
def show_network_pool(self):
sve_podmreže = list(self.mreža.subnets())
dostupne = [s for s in sve_podmreže if s not in korišćene_podmreže]
return dostupne
# Primer upotrebe
net = NetworkSubnet('192.168.0.0/24')
podmreža = net.get_subnet(28)
print(podmreža) # 192.168.0.0/28
print(net.show_network_pool())