Все задания и вспомогательные файлы можно скачать в . Если в заданиях раздела есть задания с буквами (например, 5.2a), то лучше выполнить сначала задания без букв, а затем с буквами. Задания с буквами, как правило, немного сложнее заданий без букв и развивают или усложняют идею в соответствующем задании без буквы.
Например, в разделе есть задания 5.1, 5.2, 5.2a, 5.2b, 5.3, 5.3a. Сначала лучше выполнить задания 5.1, 5.2, 5.3, а затем 5.2a, 5.2b, 5.3a
Если задания с буквами получается сделать сразу, лучше делать их по порядку.
Запросить у пользователя ввод IP-сети в формате: 10.1.1.0/24
Затем вывести информацию о сети и маске в таком формате:
Network: 10 1 1 0 00001010 00000001 00000001 00000000 Mask: /24 255 255 255 0 11111111 11111111 11111111 00000000
Проверить работу скрипта на разных комбинациях сеть/маска.
Ограничение: Все задания надо выполнять используя только пройденные темы.
Всё, как в задании 5.1. Но, если пользователь ввел адрес хоста, а не адрес сети, то надо адрес хоста преобразовать в адрес сети и вывести адрес сети и маску, как в задании 5.1.
Пример адреса сети (все биты хостовой части равны нулю):
Пример адреса хоста:
Если пользователь ввел адрес 10.0.1.1/24, вывод должен быть таким:
Network: 10 0 1 0 00001010 00000000 00000001 00000000 Mask: /24 255 255 255 0 11111111 11111111 11111111 00000000
Проверить работу скрипта на разных комбинациях сеть/маска.
Ограничение: Все задания надо выполнять используя только пройденные темы.
Преобразовать скрипт из задания 5.1a таким образом, чтобы сеть/маска не запрашивались у пользователя, а передавались как аргумент скрипту.
Ограничение: Все задания надо выполнять используя только пройденные темы.
В задании создан словарь с информацией о разных устройствах.
Вам нужно запросить у пользователя ввод имени устройства (r1, r2 или sw1). И вывести информацию о соответствующем устройстве на стандартный поток вывода (информация будет в виде словаря).
Пример выполнения скрипта (ключи могут быть в другом порядке):
$ python task_5_2.py Enter device name: r1 {'ios': '15.4', 'model': '4451', 'vendor': 'Cisco', 'location': '21 New Globe Walk', 'ip': '10.255.0.1'}
Ограничение: нельзя изменять словарь london_co.
Все задания надо выполнять используя только пройденные темы. То есть эту задачу можно решить без использования условия if.
london_co = { 'r1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.1' }, 'r2' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.2' }, 'sw1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '3850', 'ios': '3.6.XE', 'ip': '10.255.0.101', 'vlans': '10,20,30', 'routing': True } }
Переделать скрипт из задания 5.2 таким образом, чтобы, кроме имени устройства, запрашивался также параметр устройства, который нужно отобразить.
Вывести информацию о соответствующем параметре, указанного устройства.
Пример выполнения скрипта:
$ python task_5_2a.py Enter device name: r1 Enter parameter name: ios 15.4
Ограничение: нельзя изменять словарь london_co.
Все задания надо выполнять используя только пройденные темы. То есть эту задачу можно решить без использования условия if.
london_co = { 'r1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.1' }, 'r2' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.2' }, 'sw1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '3850', 'ios': '3.6.XE', 'ip': '10.255.0.101', 'vlans': '10,20,30', 'routing': True } }
Переделать скрипт из задания 5.2a таким образом, чтобы, при запросе параметра, отображался список возможных параметров.
Вывести информацию о соответствующем параметре, указанного устройства.
Пример выполнения скрипта:
$ python task_5_2b.py Enter device name: r1 Enter parameter name (ios,model,vendor,location,ip): ip 10.255.0.1
Ограничение: нельзя изменять словарь london_co.
Все задания надо выполнять используя только пройденные темы. То есть эту задачу можно решить без использования условия if.
london_co = { 'r1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.1' }, 'r2' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.2' }, 'sw1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '3850', 'ios': '3.6.XE', 'ip': '10.255.0.101', 'vlans': '10,20,30', 'routing': True } }
Переделать скрипт из задания 5.2b таким образом, чтобы, при запросе параметра, которого нет в словаре устройства, отображалось сообщение 'Такого параметра нет'.
Попробуйте набрать неправильное име параметра или несуществующий параметр, чтобы увидеть какой будет результат. А затем выполняйте задание.
Если выбран существующий параметр, вывести информацию о соответствующем параметре, указанного устройства.
Пример выполнения скрипта:
$ python task_5_2c.py Enter device name: r1 Enter parameter name (ios,model,vendor,location,ip): io Такого параметра нет
Ограничение: нельзя изменять словарь london_co.
Все задания надо выполнять используя только пройденные темы. То есть эту задачу можно решить без использования условия if.
london_co = { 'r1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.1' }, 'r2' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.2' }, 'sw1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '3850', 'ios': '3.6.XE', 'ip': '10.255.0.101', 'vlans': '10,20,30', 'routing': True } }
Переделать скрипт из задания 5.2c таким образом, чтобы, при запросе параметра, пользователь мог вводить название параметра в любом регистре.
Пример выполнения скрипта:
$ python task_5_2d.py Enter device name: r1 Enter parameter name (ios,model,vendor,location,ip): IOS 15.4
Ограничение: нельзя изменять словарь london_co.
Все задания надо выполнять используя только пройденные темы. То есть эту задачу можно решить без использования условия if.
london_co = { 'r1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.1' }, 'r2' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '4451', 'ios': '15.4', 'ip': '10.255.0.2' }, 'sw1' : { 'location': '21 New Globe Walk', 'vendor': 'Cisco', 'model': '3850', 'ios': '3.6.XE', 'ip': '10.255.0.101', 'vlans': '10,20,30', 'routing': True } }
Скрипт должен запрашивать у пользователя:
В зависимости от выбранного режима, на стандартный поток вывода, должна возвращаться соответствующая конфигурация access или trunk (шаблоны команд находятся в списках access_template и trunk_template).
При этом, сначала должна идти строка interface и подставлен номер интерфейса, а затем соответствующий шаблон, в который подставлен номер VLANа (или список VLANов).
Ограничение: Все задания надо выполнять используя только пройденные темы. То есть эту задачу можно решить без использования условия if и циклов for/while.
Ниже примеры выполнения скрипта, чтобы было проще понять задачу.
Пример выполнения скрипта, при выборе режима access:
$ python task_5_3.py Enter interface mode (access/trunk): access Enter interface type and number: Fa0/6 Enter vlan(s): 3 interface Fa0/6 switchport mode access switchport access vlan 3 switchport nonegotiate spanning-tree portfast spanning-tree bpduguard enable
Пример выполнения скрипта, при выборе режима trunk:
$ python task_5_3.py Enter interface mode (access/trunk): trunk Enter interface type and number: Fa0/7 Enter vlan(s): 2,3,4,5 interface Fa0/7 switchport trunk encapsulation dot1q switchport mode trunk switchport trunk allowed vlan 2,3,4,5
Начальное содержимое скрипта:
access_template = ['switchport mode access', 'switchport access vlan {}', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable'] trunk_template = ['switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk allowed vlan {}']
Дополнить скрипт из задания 5.3 таким образом, чтобы, в зависимости от выбранного режима, задавались разные вопросы в запросе о номере VLANа или списка VLANов:
Ограничение: Все задания надо выполнять используя только пройденные темы. То есть эту задачу можно решить без использования условия if и циклов for/while.
access_template = ['switchport mode access', 'switchport access vlan {}', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable'] trunk_template = ['switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk allowed vlan {}']
Найти индекс последнего вхождения элемента.
Например, для списка num_list, число 10 последний раз встречается с индексом 4; в списке word_list, слово 'ruby' последний раз встречается с индексом 6.
Сделать решение общим (то есть, не привязываться к конкретному элементу в конкретном списке) и проверить на двух списках, которые указаны и на разных элементах.
Для этого надо запросить у пользователя сначала ввод числа из списка num_list и затем вывести индекс его последнего появления в списке. А затем аналогично для списка word_list.
Ограничение: Все задания надо выполнять используя только пройденные темы.
num_list = [10, 2, 30, 100, 10, 50, 11, 30, 15, 7] word_list = ['python', 'ruby', 'perl', 'ruby', 'perl', 'python', 'ruby', 'perl']