- ru
- Language: en
- Documentation version: latest
Задания
Все задания и вспомогательные файлы можно скачать в репозитории. Если в заданиях раздела есть задания с буквами (например, 5.2a), то лучше выполнить сначала задания без букв, а затем с буквами. Задания с буквами, как правило, немного сложнее заданий без букв и развивают или усложняют идею в соответствующем задании без буквы.
Note
Например, в разделе есть задания 5.1, 5.2, 5.2a, 5.2b, 5.3, 5.3a. Сначала лучше выполнить задания 5.1, 5.2, 5.3, а затем 5.2a, 5.2b, 5.3a
Если задания с буквами получается сделать сразу, лучше делать их по порядку.
Задание 6.1
Список mac содержит MAC-адреса в формате XXXX:XXXX:XXXX. Однако, в оборудовании cisco MAC-адреса используются в формате XXXX.XXXX.XXXX.
Написать код, который преобразует MAC-адреса в формат cisco и добавляет их в новый список mac_cisco
Ограничение: Все задания надо выполнять используя только пройденные темы.
mac = ["aabb:cc80:7000", "aabb:dd80:7340", "aabb:ee80:7000", "aabb:ff80:7000"]
Задание 6.2
Запросить у пользователя ввод IP-адреса в формате 10.0.1.1
В зависимости от типа адреса (описаны ниже), вывести на стандартный поток вывода:
“unicast” - если первый байт в диапазоне 1-223
“multicast” - если первый байт в диапазоне 224-239
“local broadcast” - если IP-адрес равен 255.255.255.255
“unassigned” - если IP-адрес равен 0.0.0.0
“unused” - во всех остальных случаях
Ограничение: Все задания надо выполнять используя только пройденные темы.
Задание 6.2a
Сделать копию скрипта задания 6.2.
Добавить проверку введенного IP-адреса. Адрес считается корректно заданным, если он:
состоит из 4 чисел (а не букв или других символов)
числа разделенны точкой
каждое число в диапазоне от 0 до 255
Если адрес задан неправильно, выводить сообщение: “Неправильный IP-адрес”. Сообщение должно выводиться только один раз.
Ограничение: Все задания надо выполнять используя только пройденные темы.
Задание 6.2b
Сделать копию скрипта задания 6.2a.
Дополнить скрипт: Если адрес был введен неправильно, запросить адрес снова.
Ограничение: Все задания надо выполнять используя только пройденные темы.
Задание 6.3
В скрипте сделан генератор конфигурации для access-портов.
Сделать аналогичный генератор конфигурации для портов trunk.
В транках ситуация усложняется тем, что VLANов может быть много, и надо понимать, что с ним делать.
Поэтому в соответствии каждому порту стоит список и первый (нулевой) элемент списка указывает как воспринимать номера VLAN, которые идут дальше.
Пример значения и соответствующей команды:
[“add”, “10”, “20”] - команда switchport trunk allowed vlan add 10,20
[“del”, “17”] - команда switchport trunk allowed vlan remove 17
[“only”, “11”, “30”] - команда switchport trunk allowed vlan 11,30
Задача для портов 0/1, 0/2, 0/4:
сгенерировать конфигурацию на основе шаблона trunk_template
с учетом ключевых слов add, del, only
Код не должен привязываться к конкретным номерам портов. То есть, если в словаре trunk будут другие номера интерфейсов, код должен работать.
Ограничение: Все задания надо выполнять используя только пройденные темы.
access_template = [
"switchport mode access",
"switchport access vlan",
"spanning-tree portfast",
"spanning-tree bpduguard enable",
]
trunk_template = [
"switchport trunk encapsulation dot1q",
"switchport mode trunk",
"switchport trunk allowed vlan",
]
access = {"0/12": "10", "0/14": "11", "0/16": "17", "0/17": "150"}
trunk = {"0/1": ["add", "10", "20"], "0/2": ["only", "11", "30"], "0/4": ["del", "17"]}
for intf, vlan in access.items():
print("interface FastEthernet" + intf)
for command in access_template:
if command.endswith("access vlan"):
print(f" {command} {vlan}")
else:
print(f" {command}")