Пример #1
0
На основе конфигурации 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'))
Пример #2
0
В шаблоне должны поддерживаться возможности:
* добавления 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'))
Пример #3
0
* 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'))
Пример #4
0
 * на месте этой переменной ожидается список словарей с такими ключами:
  * 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)
Пример #5
0
Задание 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)