На основе конфигурации config_r1.txt, создать шаблоны: * templates/cisco_base.txt - в нем должны быть все строки, кроме настройки alias и event manager * имя хоста должно быть переменной hostname * templates/alias.txt - в этот шаблон перенести все alias * templates/eem_int_desc.txt - в этом шаблоне должен быть event manager applet В шаблонах templates/alias.txt и templates/eem_int_desc.txt переменных нет. Создать шаблон templates/cisco_router_base.txt. В шаблон должно быть включено содержимое шаблонов: * templates/cisco_base.txt * templates/alias.txt * templates/eem_int_desc.txt При этом, нельзя копировать текст шаблонов. Проверьте шаблон templates/cisco_router_base.txt, с помощью функции generate_cfg_from_template из задания 21.1-21.1c. Не копируйте код функции. В качестве данных, используйте файл data_files/router_info.yml ''' from task_21_1c import generate_cfg_from_template print( generate_cfg_from_template('templates\\cisco_router_base.txt', 'data_files\\router_info.yml'))
В шаблоне должны поддерживаться возможности: * добавления VLAN и имени VLAN * добавления VLAN как access, на указанном интерфейсе * добавления VLAN в список разрешенных, на указанные транки Если VLAN необходимо добавить как access, то надо настроить и режим интерфейса и добавить его в VLAN: interface Gi0/1 switchport mode access switchport access vlan 5 Для транков, необходимо только добавить VLAN в список разрешенных: interface Gi0/10 switchport trunk allowed vlan add 5 Имена переменных надо выбрать на основании примера данных, в файле data_files/add_vlan_to_switch.yaml. Проверьте шаблон templates/add_vlan_to_switch.txt на данных в файле data_files/add_vlan_to_switch.yaml, с помощью функции generate_cfg_from_template из задания 21.1-21.1c. Не копируйте код функции. ''' from task_21_1c import generate_cfg_from_template print( generate_cfg_from_template('templates\\add_vlan_to_switch.txt', 'data_files\\add_vlan_to_switch.yaml'))
* reference-bandwidth. Имя переменной - ref_bw * интерфейсы, на которых нужно включить OSPF. Имя переменной - ospf_intf * на месте этой переменной ожидается список словарей с такими ключами: * name - имя интерфейса, вида Fa0/1, VLan10, Gi0/0 * ip - IP-адрес интерфейса, вида 10.0.1.1 * area - номер зоны * passive - является ли интерфейс пассивным. Допустимые значения: True или False Для всех интерфейсов в списке ospf_intf, надо сгенерировать строки: network x.x.x.x 0.0.0.0 area x Если интерфейс пассивный, для него должна быть добавлена строка: passive-interface x Для интерфейсов, которые не являются пассивными, в режиме конфигурации интерфейса, надо добавить строку: ip ospf hello-interval 1 Все команды должны быть в соответствующих режимах. Проверьте получившийся шаблон templates/ospf.txt, на данных в файле data_files/ospf.yml, с помощью функции generate_cfg_from_template из задания 21.1-21.1c. Не копируйте код функции. ''' from task_21_1c import generate_cfg_from_template print(generate_cfg_from_template('templates\\ospf.txt', 'data_files\\ospf.yml'))
* на месте этой переменной ожидается список словарей с такими ключами: * name - имя интерфейса, вида Fa0/1, VLan10, Gi0/0 * ip - IP-адрес интерфейса, вида 10.0.1.1 * area - номер зоны * passive - является ли интерфейс пассивным. Допустимые значения: True или False Для всех интерфейсов в списке ospf_intf, надо сгенерировать строки: network x.x.x.x 0.0.0.0 area x Если интерфейс пассивный, для него должна быть добавлена строка: passive-interface x Для интерфейсов, которые не являются пассивными, в режиме конфигурации интерфейса, надо добавить строку: ip ospf hello-interval 1 Все команды должны быть в соответствующих режимах. Проверьте получившийся шаблон templates/ospf.txt, на данных в файле data_files/ospf.yml, с помощью функции generate_cfg_from_template из задания 21.1-21.1c. Не копируйте код функции. ''' from task_21_1c import generate_cfg_from_template result = generate_cfg_from_template('templates/ospf.txt', 'data_files/ospf.yml') print(result)
Задание 21.3a Измените шаблон templates/ospf.txt таким образом, чтобы для перечисленных переменных были указаны значения по умолчанию, которые используются в том случае, если переменная не задана. Не использовать для этого выражения if/else. Задать в шаблоне значения по умолчанию для таких переменных: * process - значение по умолчанию 1 * ref_bw - значение по умолчанию 10000 Проверьте получившийся шаблон templates/ospf.txt, на данных в файле data_files/ospf2.yml, с помощью функции generate_cfg_from_template из задания 21.1-21.1c. Не копируйте код функции. ''' import task_21_1c as gen import sys if __name__ == '__main__': template = sys.argv[1] fvars = sys.argv[2] r = gen.generate_cfg_from_template(template, fvars, trim_blocks=True, lstrip_blocks=True) #r = gen.generate_cfg_from_template(template, fvars, trim_blocks=False, lstrip_blocks=False) print(r)