def test_function_return_value_different_args(): """ Проверка работы функции с другими аргументами """ correct_return_value = [ ["network", "mask", "distance", "metric", "nexthop"], ["10.0.24.0", "24", "110", "20", ["10.0.12.2"]], ["10.0.34.0", "24", "110", "20", ["10.0.13.3"]], ["10.2.2.2", "32", "110", "11", ["10.0.12.2"]], ["10.3.3.3", "32", "110", "11", ["10.0.13.3"]], [ "10.4.4.4", "32", "110", "21", ["10.0.13.3", "10.0.12.2", "10.0.14.4"] ], ["10.5.35.0", "24", "110", "20", ["10.0.13.3"]], ] with open("output/sh_ip_route_ospf.txt") as f: sh_ip_int_br = f.read() template = "templates/sh_ip_route_ospf.template" return_value = task_22_1.parse_command_output(template, sh_ip_int_br) assert return_value != None, "Функция ничего не возвращает" assert ( type(return_value) == list ), f"По заданию функция должна возвращать список, а возвращает {type(return_value).__name__}" assert (return_value == correct_return_value ), "Функция возвращает неправильное значение"
def test_function_return_value(): correct_return_value = [ ['mac', 'ip', 'vlan', 'intf'], ['00:09:BB:3D:D6:58', '10.1.10.2', '10', 'FastEthernet0/1'], ['00:04:A3:3E:5B:69', '10.1.5.2', '5', 'FastEthernet0/10'], ['00:05:B3:7E:9B:60', '10.1.5.4', '5', 'FastEthernet0/9'], ['00:09:BC:3F:A6:50', '10.1.10.6', '10', 'FastEthernet0/3'] ] with open("output/sh_ip_dhcp_snooping.txt") as show: sh_ip_dhcp_snoop = show.read() template = "templates/sh_ip_dhcp_snooping.template" return_value = task_22_1.parse_command_output(template, sh_ip_dhcp_snoop) assert return_value == correct_return_value, \ "Шаблон templates/sh_ip_dhcp_snooping.template неправильно парсит данные"
def test_function_return_value(): correct_return_value = [ ["mac", "ip", "vlan", "intf"], ["00:09:BB:3D:D6:58", "10.1.10.2", "10", "FastEthernet0/1"], ["00:04:A3:3E:5B:69", "10.1.5.2", "5", "FastEthernet0/10"], ["00:05:B3:7E:9B:60", "10.1.5.4", "5", "FastEthernet0/9"], ["00:09:BC:3F:A6:50", "10.1.10.6", "10", "FastEthernet0/3"], ] with open("output/sh_ip_dhcp_snooping.txt") as show: sh_ip_dhcp_snoop = show.read() template = "templates/sh_ip_dhcp_snooping.template" return_value = task_22_1.parse_command_output(template, sh_ip_dhcp_snoop) assert ( return_value == correct_return_value ), "Шаблон templates/sh_ip_dhcp_snooping.template неправильно парсит данные"
def test_function_return_value(): correct_return_value = [['intf', 'address', 'status', 'protocol'], ['FastEthernet0/0', '15.0.15.1', 'up', 'up'], ['FastEthernet0/1', '10.0.12.1', 'up', 'up'], ['FastEthernet0/2', '10.0.13.1', 'up', 'up'], ['FastEthernet0/3', 'unassigned', 'up', 'up'], ['Loopback0', '10.1.1.1', 'up', 'up'], ['Loopback100', '100.0.0.1', 'up', 'up']] with open("output/sh_ip_int_br.txt") as f: sh_ip_int_br = f.read() template = "templates/sh_ip_int_br.template" return_value = task_22_1.parse_command_output(template, sh_ip_int_br) assert return_value != None, "Функция ничего не возвращает" assert type(return_value) == list, "Функция должна возвращать список" assert return_value == correct_return_value, \ "Функция возвращает неправильное значение"
def test_function_return_value(): """ Проверка работы функции """ correct_return_value = [ ["intf", "address", "status", "protocol"], ["FastEthernet0/0", "15.0.15.1", "up", "up"], ["FastEthernet0/1", "10.0.12.1", "up", "up"], ["FastEthernet0/2", "10.0.13.1", "up", "up"], ["FastEthernet0/3", "unassigned", "up", "up"], ["Loopback0", "10.1.1.1", "up", "up"], ["Loopback100", "100.0.0.1", "up", "up"], ] with open("output/sh_ip_int_br.txt") as f: sh_ip_int_br = f.read() template = "templates/sh_ip_int_br.template" return_value = task_22_1.parse_command_output(template, sh_ip_int_br) assert return_value != None, "Функция ничего не возвращает" assert ( type(return_value) == list ), f"По заданию функция должна возвращать список, а возвращает {type(return_value).__name__}" assert (return_value == correct_return_value ), "Функция возвращает неправильное значение"
# -*- coding: utf-8 -*- ''' Задание 22.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 из задания 22.1. ''' from task_22_1 import parse_command_output # don't run on import if __name__ == "__main__": with open('output/sh_ip_dhcp_snooping.txt') as f: parse_otput_list = parse_command_output( "templates/sh_ip_dhcp_snooping.template", f.read()) for line in parse_otput_list: print(line)
Вывод команды находится в файле 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. """ from task_22_1 import parse_command_output if __name__ == "__main__": with open("output/sh_ip_dhcp_snooping.txt") as show: output = show.read() result = parse_command_output("templates/sh_ip_dhcp_snooping.template", output) print(result) # templates/sh_ip_dhcp_snooping.template """ Value mac (\S+) Value ip (\S+) Value vlan (\d+) Value intf (\S+) Start ^${mac}\s+${ip}\s+\d+\s+\S+\s+${vlan}\s+${intf} -> Record """
# -*- coding: utf-8 -*- ''' Задание 22.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 из задания 22.1. ''' import sys from task_22_1 import parse_command_output with open('output/sh_ip_dhcp_snooping.txt') as f: out = f.read() print(parse_command_output('templates/sh_ip_dhcp_snooping.template', out))
# -*- coding: utf-8 -*- """ Задание 22.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 из задания 22.1. """ from task_22_1 import parse_command_output import textfsm with open("output/sh_ip_dhcp_snooping.txt", encoding='UTF-8') as ff: sh_ip_dhcp_snooping_as_line = ff.read() print( parse_command_output("templates/sh_ip_dhcp_snooping.template", sh_ip_dhcp_snooping_as_line))
# -*- coding: utf-8 -*- """ Задание 22.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 из задания 22.1. """ from task_22_1 import parse_command_output from pprint import pprint if __name__ == "__main__": with open("output/sh_ip_dhcp_snooping.txt") as out: pprint( parse_command_output("templates/sh_ip_dhcp_snooping.template", out.read()))
def main(): with open('output/sh_ip_dhcp_snooping.txt', 'r', encoding='utf-8') as f: command_output = f.read() print(parse_command_output('templates/sh_ip_dhcp_snooping.template', command_output))
# -*- coding: utf-8 -*- ''' Задание 22.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 из задания 22.1. ''' from task_22_1 import parse_command_output if __name__ == '__main__': with open('output/sh_ip_dhcp_snooping.txt') as f: print( parse_command_output('templates/sh_ip_dhcp_snooping.template', f.read()))
# -*- coding: utf-8 -*- ''' Задание 22.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 из задания 22.1. ''' from tabulate import tabulate from task_22_1 import parse_command_output with open('output/sh_ip_dhcp_snooping.txt') as f: output = f.read() table_data = parse_command_output('templates/sh_ip_dhcp_snooping.template', output) print(tabulate(table_data, headers='firstrow'))
Value Distance (\d+) Value Metric (\d+) Value List NextHop ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}) Start ^O -> Continue.Record ^O +${Network}${Mask}\s\[${Distance}\/${Metric}\]\svia\s${NextHop}, ^\s+\[${Distance}\/${Metric}\]\svia\s${NextHop}, Value intf (\S+) Value address (\S+) Value status (up|down|administratively down) Value protocol (up|down) Start ^${intf}\s+${address}\s+\w+\s+\w+\s+${status}\s+${protocol} -> Record """ from task_22_1 import parse_command_output if __name__ == "__main__": path = "/home/vagrant/my_repo/online-8-oleg-bosyuk/exercises/22_textfsm/" with open(path + 'output/sh_ip_dhcp_snooping.txt') as f: command_output = f.read() parse_command_output(path + 'templates/sh_ip_dhcp_snooping.template', command_output)
# -*- coding: utf-8 -*- ''' Задание 22.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 из задания 22.1. ''' from task_22_1 import parse_command_output from tabulate import tabulate print( tabulate(parse_command_output('templates/sh_ip_dhcp_snooping.template', 'output/sh_ip_dhcp_snooping.txt'), headers='firstrow'))
# -*- coding: utf-8 -*- ''' Задание 22.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 из задания 22.1. ''' from task_22_1 import parse_command_output if __name__ == '__main__': with open("output/sh_ip_dhcp_snooping.txt") as f: command_output = f.read() template_command = 'templates/sh_ip_dhcp_snooping.template' print(parse_command_output(template_command, command_output))