Intern
1. Napište Python objekt "switches" ve formátu YAML 2. Převraťte "switches" tak, aby zůstaly pouze přepínače "cisco" 3. V příkazu standardise_macaddr získejte poslední adresu hosta v síti "172.16.0.0/28" 4. Rozparsujte "dhcp_snooping_table" do seznamu slovníků ve formátu: ```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. Napište třídu "NetworkSubnet", která má 2 metody: - get_subnet - vrací první dostupnou podsíť požadované délky jako objekt třídy IPv4Network - show_network_pool - vrací seznam dostupných podsítí
sobes.tech AI
Odpověď od AI
yaml přepínače: cisco1: dodavatel: cisco model: 2960 ip: 10.0.0.1 cisco2: dodavatel: cisco model: 3750 ip: 10.0.0.2 hp1: dodavatel: hp model: 1920 ip: 10.0.0.3
---
# Filtrace pouze cisco přepínačů
```python
import yaml
with open('switches.yaml') as f:
switches = yaml.safe_load(f)
cisco_přepínače = {k: v for k, v in switches['switches'].items() if v['dodavatel'] == 'cisco'}
Získání poslední adresy hosta v síti 172.16.0.0/28
import ipaddress
network = ipaddress.IPv4Network('172.16.0.0/28')
poslední_host = str(list(network.hosts())[-1])
print(poslední_host) # 172.16.0.14
Analýza tabulky dhcp_snooping_table do seznamu slovníků
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
'''
řádky = dhcp_snooping_table.strip().split('\n')
dhcp_snooping_table_parsed = []
pro řádek v řádky:
mac, ip, interface = řádek.split()
dhcp_snooping_table_parsed.append({
'mac': mac,
'ip': ip,
'interface': interface
})
Třída NetworkSubnet
import ipaddress
class NetworkSubnet:
def __init__(self, síť):
self.síť = ipaddress.IPv4Network(síť)
použité_podsítě = []
def get_subnet(self, prefix):
for podsíť in self.síť.subnets(new_prefix=prefix):
if podsíť not in použité_podsítě:
použité_podsítě.append(podsíť)
return podsíť
return None
def show_network_pool(self):
všechny_podsítě = list(self.síť.subnets())
dostupné = [s for s in všechny_podsítě if s not in použité_podsítě]
return dostupné
# Příklad použití
net = NetworkSubnet('192.168.0.0/24')
podsíť = net.get_subnet(28)
print(podsíť) # 192.168.0.0/28
print(net.show_network_pool())