Ejemplo n.º 1
0
def create_vpn_config(template1, template2, data_dict):
    """
    The function that uses templates to generate a VPN configuration based on data in dictionary data.
    :param template1: name of the template file that creates the configuration for one side of the tunnel.
    :param template2: name of the template file that creates the configuration for second side of the tunnel.
    :param data_dict: dictionary with values to be substituted into templates
    :return: is tuple with two configurations (strings), which are obtained on the basis of templates.
    """
    return generate_config(template1,
                           data_dict), generate_config(template2, data_dict)
Ejemplo n.º 2
0
def configure_vpn(src_device_params, dst_device_params, src_template,
                  dst_template, vpn_data_dict):
    tunnels1 = send_command(src_device_params, show='sh ip int bri | i Tun')
    tunnels2 = send_command(dst_device_params, show='sh ip int bri | i Tun')
    vpn_data_dict['tun_num'] = find_free_tunnel_id(tunnels1, tunnels2)
    result1 = send_command(src_device_params,
                           config=generate_config(src_template, vpn_data_dict))
    result2 = send_command(dst_device_params,
                           config=generate_config(dst_template, vpn_data_dict))
    return f'{result1}\n{result2}'
Ejemplo n.º 3
0
def configure_vpn(src_device_params, dst_device_params, src_template,
                  dst_template, vpn_data_dict):
    """
    The function uses templates to generate a VPN configuration based on data in vpn_data_dict.
    :param src_device_params: source dictionary with parameters of connection
    :param dst_device_params: destination dictionary with parameters of connection
    :param src_template: name of the template file which creates the configuration for one side of the tunnel.
    :param dst_template: name of the template file which creates the configuration for second side of the tunnel.
    :param vpn_data_dict: dictionary with values to be substituted into templates
    :return: output of commands from two routers
    """

    return generate_config(template1,
                           data_dict), generate_config(template2, data_dict)
Ejemplo n.º 4
0
def test_function_return_value():
    correct_value_vlan = "vlan 10\n" "name Marketing"
    correct_value_access = ("interface Fa0/1\n"
                            "switchport mode access\n"
                            "switchport access vlan 10")
    correct_value_trunk = ("interface Fa0/23\n"
                           "switchport trunk allowed vlan add 10\n"
                           "interface Fa0/24\n"
                           "switchport trunk allowed vlan add 10")

    template = "templates/add_vlan_to_switch.txt"
    data = {
        "vlan_id": 10,
        "name": "Marketing",
        "trunk": ["Fa0/23", "Fa0/24"],
        "access": ["Fa0/1"],
    }

    return_value = task_21_1.generate_config(template, data)
    return_value = strip_empty_lines(return_value)

    assert (
        correct_value_vlan in return_value
    ), "В итоговой конфигурации не создан VLAN и/или не назначено имя VLAN"
    assert (correct_value_access in return_value
            ), "В итоговой конфигурации неправильная настройка access"
    assert (correct_value_trunk in return_value
            ), "В итоговой конфигурации неправильная настройка trunk"
Ejemplo n.º 5
0
def test_function_return_value():
    correct_value_vlan = ('vlan 10\n' 'name Marketing')
    correct_value_access = ('interface Fa0/1\n'
                            'switchport mode access\n'
                            'switchport access vlan 10')
    correct_value_trunk = ('interface Fa0/23\n'
                           'switchport trunk allowed vlan add 10\n'
                           'interface Fa0/24\n'
                           'switchport trunk allowed vlan add 10')

    template = 'templates/add_vlan_to_switch.txt'
    data = {
        'vlan_id': 10,
        'name': 'Marketing',
        'trunk': ['Fa0/23', 'Fa0/24'],
        'access': ['Fa0/1']
    }

    return_value = task_21_1.generate_config(template, data)
    return_value = strip_empty_lines(return_value)

    assert correct_value_vlan in return_value,\
            "В итоговой конфигурации не создан VLAN и/или не назначено имя VLAN"
    assert correct_value_access in return_value,\
            "В итоговой конфигурации неправильная настройка access"
    assert correct_value_trunk in return_value,\
            "В итоговой конфигурации неправильная настройка trunk"
Ejemplo n.º 6
0
def test_function_return_value():
    service_section = (
        'service timestamps debug datetime msec localtime show-timezone\n'
        'service timestamps log datetime msec localtime show-timezone\n'
        'service tcp-keepalives-in\n'
        'service tcp-keepalives-out\n'
        'service password-encryption\n')
    alias_section = (
        'alias exec top sh proc cpu sorted | excl 0.00%__0.00%__0.00%\n'
        'alias exec diff sh archive config differences nvram:startup-config system:running-config\n'
        'alias exec bri show ip int bri | exc unass\n'
        'alias exec id show int desc\n')
    eem_section = (
        'event manager applet update-int-desc\n'
        ' event neighbor-discovery interface regexp .*Ethernet.* cdp add\n'
        ' action 1.0 cli command "enable"\n'
        ' action 2.0 cli command "config t"\n'
        ' action 3.0 cli command "interface $_nd_local_intf_name"\n'
        ' action 4.0 cli command "description To $_nd_cdp_entry_name $_nd_port_id"\n'
    )

    template = 'templates/cisco_router_base.txt'
    data = {'hostname': 'R1'}
    return_value = task_21_1.generate_config(template, data)
    assert service_section in return_value, "В итоговой конфигурации нет команд service"
    assert alias_section in return_value, "В итоговой конфигурации нет команд alias"
    assert eem_section in return_value, "В итоговой конфигурации нет настройки event manager"
    assert data[
        'hostname'] in return_value, "В итоговой конфигурации нет hostname"
Ejemplo n.º 7
0
def test_function_return_value():
    correct_return_value_router = (
        "router ospf 10\n"
        "router-id 10.0.0.1\n"
        "auto-cost reference-bandwidth 20000\n"
        "network 10.255.0.1 0.0.0.0 area 0\n"
        "network 10.255.1.1 0.0.0.0 area 0\n"
        "network 10.255.2.1 0.0.0.0 area 0\n"
        "network 10.0.10.1 0.0.0.0 area 2\n"
        "network 10.0.20.1 0.0.0.0 area 2\n"
        "passive-interface Fa0/0.10\n"
        "passive-interface Fa0/0.20\n"
    )
    correct_return_value_intf = (
        "interface Fa0/1\n"
        "ip ospf hello-interval 1\n"
        "interface Fa0/1.100\n"
        "ip ospf hello-interval 1\n"
        "interface Fa0/1.200\n"
        "ip ospf hello-interval 1\n"
    )

    template = "templates/ospf.txt"
    data = {
        "ospf_intf": [
            {"area": 0, "ip": "10.255.0.1", "name": "Fa0/1", "passive": False},
            {"area": 0, "ip": "10.255.1.1", "name": "Fa0/1.100", "passive": False},
            {"area": 0, "ip": "10.255.2.1", "name": "Fa0/1.200", "passive": False},
            {"area": 2, "ip": "10.0.10.1", "name": "Fa0/0.10", "passive": True},
            {"area": 2, "ip": "10.0.20.1", "name": "Fa0/0.20", "passive": True},
        ],
        "process": 10,
        "ref_bw": 20000,
        "router_id": "10.0.0.1",
    }

    return_value = task_21_1.generate_config(template, data)
    correct_lines_router = set(correct_return_value_router.splitlines())
    correct_lines_interface = set(correct_return_value_intf.splitlines())

    return_value = strip_empty_lines(return_value)
    return_lines = set(return_value.splitlines())

    # проверяем что строки из correct_return_value_router содержатся в return_value
    assert correct_lines_router.issubset(
        return_lines
    ), "В итоговой конфигурации режима router ospf не все строки"
    # проверяем что строки из correct_return_value_intf содержатся в return_value
    assert correct_lines_interface.issubset(
        return_lines
    ), "В итоговой конфигурации интерфейсов не все строки"
Ejemplo n.º 8
0
def test_function_return_value():
    correct_return_value = ('\n'
                            'hostname R3\n'
                            '\n'
                            'interface Loopback0\n'
                            ' ip address 10.0.0.3 255.255.255.255\n'
                            '\n'
                            'vlan 10\n'
                            ' name Marketing\n'
                            'vlan 20\n'
                            ' name Voice\n'
                            'vlan 30\n'
                            ' name Management\n'
                            '\n'
                            'router ospf 1\n'
                            ' router-id 10.0.0.3\n'
                            ' auto-cost reference-bandwidth 10000\n'
                            ' network 10.0.1.0 0.0.0.255 area 0\n'
                            ' network 10.0.2.0 0.0.0.255 area 2\n'
                            ' network 10.1.1.0 0.0.0.255 area 0\n')

    template = 'templates/for.txt'
    data = {
        'id':
        3,
        'name':
        'R3',
        'vlans': {
            10: 'Marketing',
            20: 'Voice',
            30: 'Management'
        },
        'ospf': [{
            'network': '10.0.1.0 0.0.0.255',
            'area': 0
        }, {
            'network': '10.0.2.0 0.0.0.255',
            'area': 2
        }, {
            'network': '10.1.1.0 0.0.0.255',
            'area': 0
        }]
    }
    return_value = task_21_1.generate_config(template, data)
    assert return_value != None, "Функция ничего не возвращает"
    assert type(return_value) == str, "Функция должна возвращать строку"
    assert strip_empty_lines(return_value) == strip_empty_lines(correct_return_value),\
            "Функция возвращает неправильное значение"
Ejemplo n.º 9
0
def test_function_return_value():
    correct_return_value_router = (
        'router ospf 10\n'
        'router-id 10.0.0.1\n'
        'auto-cost reference-bandwidth 20000\n'
        'network 10.255.0.1 0.0.0.0 area 0\n'
        'network 10.255.1.1 0.0.0.0 area 0\n'
        'network 10.255.2.1 0.0.0.0 area 0\n'
        'network 10.0.10.1 0.0.0.0 area 2\n'
        'network 10.0.20.1 0.0.0.0 area 2\n'
        'passive-interface Fa0/0.10\n'
        'passive-interface Fa0/0.20\n'
    )
    correct_return_value_intf = (
        'interface Fa0/1\n'
        'ip ospf hello-interval 1\n'
        'interface Fa0/1.100\n'
        'ip ospf hello-interval 1\n'
        'interface Fa0/1.200\n'
        'ip ospf hello-interval 1\n'
    )

    template = 'templates/ospf.txt'
    data = {
        'ospf_intf': [
            {'area': 0, 'ip': '10.255.0.1', 'name': 'Fa0/1', 'passive': False},
            {'area': 0, 'ip': '10.255.1.1', 'name': 'Fa0/1.100', 'passive': False},
            {'area': 0, 'ip': '10.255.2.1', 'name': 'Fa0/1.200', 'passive': False},
            {'area': 2, 'ip': '10.0.10.1', 'name': 'Fa0/0.10', 'passive': True},
            {'area': 2, 'ip': '10.0.20.1', 'name': 'Fa0/0.20', 'passive': True}],
        'process': 10,
        'ref_bw': 20000,
        'router_id': '10.0.0.1'
    }

    return_value = task_21_1.generate_config(template, data)
    correct_lines_router = set(correct_return_value_router.splitlines())
    correct_lines_interface = set(correct_return_value_intf.splitlines())

    return_value = strip_empty_lines(return_value)
    return_lines = set(return_value.splitlines())

    # проверяем что строки из correct_return_value_router содержатся в return_value
    assert correct_lines_router.issubset(return_lines),\
            "В итоговой конфигурации режима router ospf не все строки"
    # проверяем что строки из correct_return_value_intf содержатся в return_value
    assert correct_lines_interface.issubset(return_lines),\
            "В итоговой конфигурации интерфейсов не все строки"
Ejemplo n.º 10
0
def test_function_return_value():
    correct_return_value = (
        "\n"
        "hostname R3\n"
        "\n"
        "interface Loopback0\n"
        " ip address 10.0.0.3 255.255.255.255\n"
        "\n"
        "vlan 10\n"
        " name Marketing\n"
        "vlan 20\n"
        " name Voice\n"
        "vlan 30\n"
        " name Management\n"
        "\n"
        "router ospf 1\n"
        " router-id 10.0.0.3\n"
        " auto-cost reference-bandwidth 10000\n"
        " network 10.0.1.0 0.0.0.255 area 0\n"
        " network 10.0.2.0 0.0.0.255 area 2\n"
        " network 10.1.1.0 0.0.0.255 area 0\n"
    )

    template = "templates/for.txt"
    data = {
        "id": 3,
        "name": "R3",
        "vlans": {10: "Marketing", 20: "Voice", 30: "Management"},
        "ospf": [
            {"network": "10.0.1.0 0.0.0.255", "area": 0},
            {"network": "10.0.2.0 0.0.0.255", "area": 2},
            {"network": "10.1.1.0 0.0.0.255", "area": 0},
        ],
    }
    return_value = task_21_1.generate_config(template, data)
    assert return_value != None, "Функция ничего не возвращает"
    assert (
        type(return_value) == str
    ), f"По заданию функция должна возвращать строку, а возвращает {type(return_value).__name__}"
    assert strip_empty_lines(return_value) == strip_empty_lines(
        correct_return_value
    ), "Функция возвращает неправильное значение"
Ejemplo n.º 11
0
* 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_router_base.txt должно быть
включено содержимое шаблонов:
* templates/cisco_base.txt
* templates/alias.txt
* templates/eem_int_desc.txt

При этом, нельзя копировать текст шаблонов.

Шаблоны надо создавать вручную, скопировав части конфига в соответствующие шаблоны.

Проверьте шаблон templates/cisco_router_base.txt, с помощью
функции generate_config из задания 21.1. Не копируйте код функции generate_config.

В качестве данных, используйте информацию из файла data_files/router_info.yml

'''
from task_21_1 import generate_config

#dot't run on import
if __name__ == "__main__":
    with open("data_files/router_info.yml") as src:
        vars_dict = safe_load(src)
    print(generate_config("templates/cisco_router_base.txt", vars_dict))
Ejemplo n.º 12
0
Для всех интерфейсов в списке 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_config из задания 21.1.
Не копируйте код функции generate_config.


"""

from jinja2 import Environment, FileSystemLoader
import yaml
from task_21_1 import generate_config

if __name__ == "__main__":
    path = "/home/vagrant/my_repo/online-8-oleg-bosyuk/exercises/21_jinja2/"
    data_file = "data_files/ospf.yml"
    with open(path + data_file) as f:
        info = yaml.safe_load(f)
    print(generate_config('templates/ospf.txt', info))
Ejemplo n.º 13
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_config из задания 21.1.
Не копируйте код функции generate_config.


'''

from task_21_1 import generate_config

import yaml

dic = yaml.load(open('data_files/ospf.yml'), Loader=yaml.FullLoader)
print(generate_config('templates/ospf.txt', dic))
Ejemplo n.º 14
0
def main():
    with open('data_files/router_info.yml', 'r', encoding='utf-8') as f:
        data_dict = yaml.safe_load(f)
        print(generate_config('templates/cisco_router_base.txt', data_dict))
Ejemplo n.º 15
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_config из задания 21.1.
Не копируйте код функции generate_config.

'''

from task_21_1 import generate_config

import yaml

dic = yaml.load(open('data_files/add_vlan_to_switch.yaml'),
                Loader=yaml.FullLoader)
print(generate_config('templates/add_vlan_to_switch.txt', dic), end='')
Ejemplo n.º 16
0
Задание 21.4

Создайте шаблон templates/add_vlan_to_switch.txt, который будет использоваться
при необходимости добавить VLAN на коммутатор.

В шаблоне должны поддерживаться возможности:
* добавления 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_config из задания 21.1.
Не копируйте код функции generate_config.

'''
from task_21_1 import generate_config

generate_config('templates/add_vlan_to_switch.txt',
                'data_files/add_vlan_to_switch.yaml')
Ejemplo n.º 17
0
def main():
    with open('data_files/add_vlan_to_switch.yaml', 'r',
              encoding='utf-8') as f:
        data_dict = yaml.safe_load(f)
        print(generate_config('templates/add_vlan_to_switch.txt', data_dict))
Ejemplo n.º 18
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_config из задания 21.1.
Не копируйте код функции generate_config.


"""
from task_21_1 import generate_config
import yaml
if __name__=="__main__":
    with open("data_files/ospf.yml") as f:
        data=yaml.safe_load(f)
    print(generate_config("templates/ospf.txt", data))
Ejemplo n.º 19
0
Создайте шаблон templates/add_vlan_to_switch.txt, который будет использоваться
при необходимости добавить VLAN на коммутатор.

В шаблоне должны поддерживаться возможности:
* добавления 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_config из задания 21.1.
Не копируйте код функции generate_config.

'''
from task_21_1 import generate_config
import yaml
router = yaml.load(open('data_files/add_vlan_to_switch.yaml'))
print(generate_config('add_vlan_to_switch.txt', router))
Ejemplo n.º 20
0
 network {{ int.ip }} 0.0.0.0 area {{ int.area }}
  {% endfor %}
 {% for int in ospf_intf %}
 {% if int.passive == True: %}
 passive-interface {{ int.name }}
 {%endif%}
 {% endfor %}
!
{% for int in ospf_intf %}
{% if int.passive == False: %}
interface {{ int.name }}
 ip ospf hello-interval 1
!
 {%endif%}
 {% endfor %}


"""


from jinja2 import Environment, FileSystemLoader
import yaml
from task_21_1 import generate_config

if __name__ == "__main__":
    path = "/home/vagrant/my_repo/online-8-oleg-bosyuk/exercises/21_jinja2/"
    data_file = "data_files/add_vlan_to_switch.yaml"
    with open(path + data_file) as f:
        info = yaml.safe_load(f)
    print(generate_config('templates/add_vlan_to_switch.txt', info))
Ejemplo n.º 21
0
# -*- coding: utf-8 -*-
'''
Задание 21.2

На основе конфигурации 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_router_base.txt должно быть включено содержимое шаблонов:
* templates/cisco_base.txt
* templates/alias.txt
* templates/eem_int_desc.txt

При этом, нельзя копировать текст шаблонов.

Шаблоны надо создавать вручную, скопировав части конфига в соответствующие шаблоны.

Проверьте шаблон templates/cisco_router_base.txt, с помощью
функции generate_config из задания 21.1. Не копируйте код функции generate_config.

В качестве данных, используйте информацию из файла data_files/router_info.yml

'''
from task_21_1 import generate_config

print(generate_config('cisco_router_base.txt', 'data_files/router_info.yml'))
Ejemplo n.º 22
0
Для всех интерфейсов в списке 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_config из задания 21.1.
Не копируйте код функции generate_config.


'''
from task_21_1 import generate_config
from pprint import pprint
import yaml
from sys import argv

if __name__=="__main__":
  with open("data_files/ospf.yml") as yamlfile:
      data_dict=yaml.safe_load(yamlfile)
  template_file=argv[1]
  print(generate_config(template_file,data_dict))
Ejemplo n.º 23
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_config из задания 21.1.
Не копируйте код функции generate_config.


'''
from task_21_1 import generate_config

generate_config('templates/ospf.txt', 'data_files/ospf.yml')
Ejemplo n.º 24
0
Для всех интерфейсов в списке 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_config из задания 21.1.
Не копируйте код функции generate_config.


"""
import yaml
from jinja2 import Environment, FileSystemLoader
from pprint import pprint
from task_21_1 import generate_config

path='templates/ospf.txt'

with open('data_files/ospf.yml', 'r') as f:
	data_dict=yaml.safe_load(f)
	print(generate_config(path, data_dict))
Ejemplo n.º 25
0
* интерфейсы, на которых нужно включить 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_config из задания 21.1.
Не копируйте код функции generate_config.


'''
from task_21_1 import generate_config

if __name__ == '__main__':
    print(generate_config('ospf.txt', 'data_files/ospf.yml'))
Ejemplo n.º 26
0
при необходимости добавить VLAN на коммутатор.

В шаблоне должны поддерживаться возможности:
* добавления 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_config из задания 21.1.
Не копируйте код функции generate_config.

'''
import yaml
from task_21_1 import generate_config

if __name__ == '__main__':
    vlan = yaml.safe_load(open('data_files/add_vlan_to_switch.yaml'))
    generate_config('templates/add_vlan_to_switch.txt', vlan)
Ejemplo n.º 27
0
Для всех интерфейсов в списке 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_config из задания 21.1.
Не копируйте код функции generate_config.


'''
from jinja2 import Environment, FileSystemLoader
import os, yaml, pprint
from task_21_1 import generate_config

if __name__ == '__main__':
    template = os.path.abspath("templates/ospf.txt")
    with open('data_files/ospf.yml') as f:
        data_dict = yaml.load(f)
    str_conf = generate_config(template, data_dict)
    print(str_conf)
Ejemplo n.º 28
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_config из задания 21.1.
Не копируйте код функции generate_config.

"""
import yaml
from task_21_1 import generate_config
if __name__ == "__main__":
    with open("data_files/add_vlan_to_switch.yaml") as f:
        data = yaml.safe_load(f)
    print(generate_config("templates/add_vlan_to_switch.txt", data))
Ejemplo n.º 29
0
* 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_router_base.txt должно быть включено содержимое шаблонов:
* templates/cisco_base.txt
* templates/alias.txt
* templates/eem_int_desc.txt

При этом, нельзя копировать текст шаблонов.

Проверьте шаблон templates/cisco_router_base.txt, с помощью
функции generate_config из задания 21.1. Не копируйте код функции generate_config.

В качестве данных, используйте информацию из файла data_files/router_info.yml

"""

from jinja2 import Environment, FileSystemLoader
import yaml
import os
from task_21_1 import generate_config

#testing
template1 = "templates/cisco_router_base.txt"
with open('data_files/router_info.yml') as f:
    data_dict1 = yaml.safe_load(f)
    print(generate_config(template1, data_dict1))
Ejemplo n.º 30
0
Если интерфейс пассивный, для него должна быть добавлена строка:
 passive-interface x

Для интерфейсов, которые не являются пассивными, в режиме конфигурации интерфейса,
надо добавить строку:
 ip ospf hello-interval 1


Все команды должны быть в соответствующих режимах.

Проверьте получившийся шаблон templates/ospf.txt, на данных в файле data_files/ospf.yml,
с помощью функции generate_config из задания 21.1.
Не копируйте код функции generate_config.


"""
from task_21_1 import generate_config
import yaml
import sys

sys.path.insert(
    0, 'C:/Users/snowowl/PycharmProjects/Natenka_python_tasks/21_jinja2/')

with open(
        'C:/Users/snowowl/PycharmProjects/Natenka_python_tasks/21_jinja2/data_files/ospf.yml'
) as f:
    var = yaml.safe_load(f)

conf = generate_config('ospf.txt', var)
with open('task_21_3_result.txt', 'w') as f:
    f.write(conf)