Intern
1. Napisz obiekt Python "switches" w formacie YAML 2. Przekształć "switches" tak, aby pozostały tylko przełączniki "cisco" 3. W poleceniu standardise_macaddr uzyskaj ostatni adres hosta w sieci "172.16.0.0/28" 4. Zparsuj "dhcp_snooping_table" do listy słowników w następującym formacie: ```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. Napisz klasę "NetworkSubnet" z dwoma metodami: - get_subnet - zwraca pierwszą dostępną podsieć o zadanej długości jako obiekt klasy IPv4Network - show_network_pool - zwraca listę dostępnych podsieci
sobes.tech AI
Odpowiedź od AI
yaml przełączniki: cisco1: dostawca: cisco model: 2960 ip: 10.0.0.1 cisco2: dostawca: cisco model: 3750 ip: 10.0.0.2 hp1: dostawca: hp model: 1920 ip: 10.0.0.3
---
# Filtrowanie tylko przełączników cisco
```python
import yaml
with open('switches.yaml') as f:
switches = yaml.safe_load(f)
przełączniki_cisco = {k: v for k, v in switches['switches'].items() if v['dostawca'] == 'cisco'}
Uzyskanie ostatniego adresu hosta w sieci 172.16.0.0/28
import ipaddress
network = ipaddress.IPv4Network('172.16.0.0/28')
ostatni_host = str(list(network.hosts())[-1])
print(ostatni_host) # 172.16.0.14
Parsowanie tabeli dhcp_snooping na listę słowników
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
'''
linie = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
for linia in linie:
mac, ip, interface = linia.split()
dhcp_snooping_table_parsed.append({
'mac': mac,
'ip': ip,
'interface': interface
})
Klasa NetworkSubnet
import ipaddress
class NetworkSubnet:
def __init__(self, sieć):
self.sieć = ipaddress.IPv4Network(sieć)
użyte_podsieci = []
def get_subnet(self, prefix):
for podsieć in self.sieć.subnets(new_prefix=prefix):
if podsieć not in użyte_podsieci:
użyte_podsieci.append(podsieć)
return podsieć
return None
def show_network_pool(self):
wszystkie_podsieci = list(self.sieć.subnets())
dostępne = [s for s in wszystkie_podsieci if s not in użyte_podsieci]
return dostępne
# Przykład użycia
net = NetworkSubnet('192.168.0.0/24')
podsieć = net.get_subnet(28)
print(podsieć) # 192.168.0.0/28
print(net.show_network_pool())