Intern
1. YAML форматында Python объектисин "switches" жазгыла 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
импорт yaml
файлды ачуу('switches.yaml') катары:
switches = yaml.safe_load(файл)
cisco_switches = {k: v for k, v in switches['switches'].items() if v['vendor'] == 'cisco'}
172.16.0.0/28 тармактагы акыркы хосттун дарегин алуу
импорт ipaddress
тармак = ipaddress.IPv4Network('172.16.0.0/28')
акыркы_хост = str(list(тармак.hosts())[-1])
басып чыгуу(акыркы_хост) # 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 = []
for жол in жолдор:
mac, ip, интерфейс = жол.split()
dhcp_snooping_table_parsed.append({
'mac': mac,
'ip': ip,
'interface': интерфейс
})
NetworkSubnet классы
импорт ipaddress
класс NetworkSubnet:
def __init__(өзү, тармак):
өзү.тармак = ipaddress.IPv4Network(тармак)
өзү.колдонуучу_подсети = []
def get_subnet(өзү, префикс_узундугу):
for подсеть in өзү.тармак.subnets(new_prefix=префикс_узундугу):
if подсеть эмес болсо өзү.колдонуучу_подсети:
өзү.колдонуучу_подсети.append(подсеть)
кайтаруу подсеть
кайтаруу None
def show_network_pool(өзү):
бардык_подсети = listөзү.тармак.subnets())
жеткиликтүү = [s for s in бардык_подсети if s эмес болсо өзү.колдонуучу_подсети]
кайтаруу жеткиликтүү
# Колдонуунун мисалы
net = NetworkSubnet('192.168.0.0/24')
подсеть = өзү.get_subnet(28)
басып чыгуу(подсеть) # 192.168.0.0/28
басып чыгуу(өзү.show_network_pool())