- en
- Language: ru
- Documentation version: latest
Задания
Предупреждение
Начиная с раздела «9. Функции» для проверки заданий есть автоматические тесты. Они помогают проверить все ли соответствует поставленной задаче, а также дают обратный отклик по тому, что не соответствует задаче. Как правило, после первого периода адаптации к тестам, становится проще делать задания с тестами.
Задание 21.1
Создать функцию parse_command_output. Параметры функции:
template - имя файла, в котором находится шаблон TextFSM (templates/sh_ip_int_br.template)
command_output - вывод соответствующей команды show (строка)
Функция должна возвращать список:
первый элемент - это список с названиями столбцов
остальные элементы это списки, в котором находятся результаты обработки вывода
Проверить работу функции на выводе команды output/sh_ip_int_br.txt и шаблоне templates/sh_ip_int_br.template.
from netmiko import ConnectHandler
# вызов функции должен выглядеть так
if __name__ == "__main__":
r1_params = {
"device_type": "cisco_ios",
"host": "192.168.100.1",
"username": "cisco",
"password": "cisco",
"secret": "cisco",
}
with ConnectHandler(**r1_params) as r1:
r1.enable()
output = r1.send_command("sh ip int br")
result = parse_command_output("templates/sh_ip_int_br.template", output)
print(result)
Задание 21.1a
Создать функцию parse_output_to_dict.
Параметры функции:
template - имя файла, в котором находится шаблон TextFSM (templates/sh_ip_int_br.template)
command_output - вывод соответствующей команды show (строка)
Функция должна возвращать список словарей:
ключи - имена переменных в шаблоне TextFSM
значения - части вывода, которые соответствуют переменным
Проверить работу функции на выводе команды output/sh_ip_int_br.txt и шаблоне templates/sh_ip_int_br.template.
Задание 21.2
Сделать шаблон TextFSM для обработки вывода sh ip dhcp snooping binding и записать его в файл templates/sh_ip_dhcp_snooping.template
Вывод команды находится в файле output/sh_ip_dhcp_snooping.txt.
Шаблон должен обрабатывать и возвращать значения таких столбцов:
mac - такого вида 00:04:A3:3E:5B:69
ip - такого вида 10.1.10.6
vlan - 10
intf - FastEthernet0/10
Проверить работу шаблона с помощью функции parse_command_output из задания 21.1.
Задание 21.3
Создать функцию parse_command_dynamic.
Параметры функции:
command_output - вывод команды (строка)
attributes_dict - словарь атрибутов, в котором находятся такие пары ключ-значение:
„Command“: команда
„Vendor“: вендор
index_file - имя файла, где хранится соответствие между командами и шаблонами. Значение по умолчанию - «index»
templ_path - каталог, где хранятся шаблоны. Значение по умолчанию - «templates»
Функция должна возвращать список словарей с результатами обработки вывода команды (как в задании 21.1a):
ключи - имена переменных в шаблоне TextFSM
значения - части вывода, которые соответствуют переменным
Проверить работу функции на примере вывода команды sh ip int br.
Задание 21.4
Создать функцию send_and_parse_show_command.
Параметры функции:
device_dict - словарь с параметрами подключения к одному устройству
command - команда, которую надо выполнить
templates_path - путь к каталогу с шаблонами TextFSM
index - имя индекс файла, значение по умолчанию «index»
Функция должна подключаться к одному устройству, отправлять команду show с помощью netmiko, а затем парсить вывод команды с помощью TextFSM.
Функция должна возвращать список словарей с результатами обработки вывода команды (как в задании 21.1a):
ключи - имена переменных в шаблоне TextFSM
значения - части вывода, которые соответствуют переменным
Проверить работу функции на примере вывода команды sh ip int br и устройствах из devices.yaml.
Задание 21.5
Создать функцию send_and_parse_command_parallel.
Функция send_and_parse_command_parallel должна запускать в параллельных потоках функцию send_and_parse_show_command из задания 21.4.
В этом задании надо самостоятельно решить:
какие параметры будут у функции
что она будет возвращать
Теста для этого задания нет.