Intern
1. Írjon Python objektumot "switches" YAML formátumban 2. Alakítsa át a "switches"-t úgy, hogy csak "cisco" kapcsolók maradjanak 3. A standardise_macaddr parancsban szerezze meg a hálózat "172.16.0.0/28" utolsó hoszt címét 4. Elemezze a "dhcp_snooping_table"-t egy szótárak listájára a következő formátumban: ```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. Írjon egy "NetworkSubnet" nevű osztályt, amelynek 2 metódusa van: - get_subnet - visszaadja az első elérhető alhálózatot a megadott hosszúságban, IPv4Network osztály példányaként - show_network_pool - visszaadja az elérhető alhálózatok listáját
sobes.tech MI
Válasz az MI-től
yaml kapcsolók: cisco1: beszállító: cisco modell: 2960 ip: 10.0.0.1 cisco2: beszállító: cisco modell: 3750 ip: 10.0.0.2 hp1: beszállító: hp modell: 1920 ip: 10.0.0.3
---
# Csak cisco kapcsolók szűrése
```python
import yaml
with open('switches.yaml') as f:
switches = yaml.safe_load(f)
cisco_kapcsolók = {k: v for k, v in switches['switches'].items() if v['beszállító'] == 'cisco'}
A hálózat utolsó gazda címének megszerzése a 172.16.0.0/28 hálózatban
import ipaddress
network = ipaddress.IPv4Network('172.16.0.0/28')
utolsó_gazda = str(list(network.hosts())[-1])
print(utolsó_gazda) # 172.16.0.14
A dhcp_snooping_table táblázat elemzése szótárak listájára
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
'''
sorok = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
minden sorban:
mac, ip, interface = sor.split()
dhcp_snooping_table_parsed.append({
'mac': mac,
'ip': ip,
'interface': interface
})
NetworkSubnet osztály
import ipaddress
class NetworkSubnet:
def __init__(self, hálózat):
self.hálózat = ipaddress.IPv4Network(hálózat)
használt_alhálózatok = []
def get_subnet(self, prefix):
for alhálózat in self.hálózat.subnets(new_prefix=prefix):
if alhálózat not in használt_alhálózatok:
használt_alhálózatok.append(alhálózat)
return alhálózat
return None
def show_network_pool(self):
összes_alhálózat = list(self.hálózat.subnets())
elérhető = [s for s in összes_alhálózat if s not in használt_alhálózatok]
return elérhető
# Példa használat
net = NetworkSubnet('192.168.0.0/24')
alhálózat = net.get_subnet(28)
print(alhálózat) # 192.168.0.0/28
print(net.show_network_pool())