# -*- coding: utf-8 -*-
"""
Задание 15.1a

Скопировать функцию get_ip_from_cfg из задания 15.1 и переделать ее таким образом, чтобы она возвращала словарь:
* ключ: имя интерфейса
* значение: кортеж с двумя строками:
  * IP-адрес
  * маска

В словарь добавлять только те интерфейсы, на которых настроены IP-адреса.

Например (взяты произвольные адреса):
{'FastEthernet0/1':('10.0.1.1', '255.255.255.0'),
 'FastEthernet0/2':('10.0.2.1', '255.255.255.0')}

Для получения такого результата, используйте регулярные выражения.

Проверить работу функции на примере файла config_r1.txt.

Обратите внимание, что в данном случае, можно не проверять корректность IP-адреса,
диапазоны адресов и так далее, так как обрабатывается вывод команды, а не ввод пользователя.

"""
import re
from pprint import pprint

def get_ip_from_cfg(filecfg):
    '''
    Функция должна обрабатывать конфигурацию и возвращать словарь:
    * ключ: имя интерфейса
    * значение: кортеж с двумя строками:
      * IP-адрес
      * маска
    В словарь добавлять только те интерфейсы, на которых настроены IP-адреса.
    Например (взяты произвольные адреса):
    {'FastEthernet0/1':('10.0.1.1', '255.255.255.0'),
     'FastEthernet0/2':('10.0.2.1', '255.255.255.0')}
    :param filecfg:
    :return:
    '''
    result = {}

    regex_intf = re.compile(r'interface (\S+)')
    regex_ip = re.compile(r' ip address (\S+) (\S+)')

    with open(filecfg) as f:
        for line in f:

            match_intf = regex_intf.match(line)
            if match_intf:
                intf = match_intf.group(1)

            match_ip = regex_ip.match(line)
            if match_ip:
                result[intf] = (match_ip.groups())


    return result

if __name__ == '__main__':
    cfg = 'config_r1.txt'

    pprint(get_ip_from_cfg(cfg))