Я пытаюсь использовать CiscoConfParse в конфигурации Cisco IOS и проанализировать полную конфигурацию PE.
Цель состоит в том, чтобы собрать всю необходимую информацию из конфигурации PE (VRF, INTERFACE, настройка BGP).
Я нашел эту библиотеку ciscoconfparse (https://pypi.python.org/pypi/ciscoconfparse).
Код работает только частично и регулярное выражение соответствует правильно, но только первое совпадение (см. также выходные данные ниже).
Код:
import ciscoconfparse
def parse_config(config_file):
# Create a CiscoConfParse object from the configuration file
config = ciscoconfparse.CiscoConfParse(config_file)
# Parse VRF configurations
vrf_configs = []
for vrf_obj in config.find_objects(r'^vrf definition (\S+)'):
vrf_config = {
'name': vrf_obj.re_match(r'vrf definition (\S+)'),
'rd': vrf_obj.re_match(r'rd (\S+)'),
'export_rt': vrf_obj.re_match(r'route-target export (\S+)'),
'import_rt': vrf_obj.re_match(r'route-target import (\S+)'),
}
vrf_configs.append(vrf_config)
# Parse Interface configurations
interface_configs = []
for intf_obj in config.find_objects(r'^interface'):
interface_config = {
'name': intf_obj.re_match(r'interface (\S+)'),
'description': intf_obj.re_match(r'description (.+)'),
'vrf': intf_obj.re_match(r'vrf forwarding (\S+)'),
'interface_ip': intf_obj.re_match(r'ip address (\S+) (\S+)'),
'interface_dot1q': intf_obj.re_match(r'encapsulation dot1q (\S+)'),
}
interface_configs.append(interface_config)
# Parse BGP configurations
bgp_configs = []
for bgp_obj in config.find_objects(r'^router bgp (\S+)'):
bgp_config = {
'as_number PE': bgp_obj.re_match(r'router bgp (\d+)'),
'bgp_address-family': bgp_obj.re_match(r'address-family ipv4 vrf (\S+)'),
'bgp_neighbor_ip': bgp_obj.re_match(r'neighbor (\S+) remote-as (\d+)'),
'bgp_neighbor_as': bgp_obj.re_match(r'remote-as (\d+)'),
}
bgp_configs.append(bgp_config)
return vrf_configs, interface_configs, bgp_configs
# Parse the PE router configuration
vrf_configs, interface_configs, bgp_configs = parse_config('pe_config.txt')
# Print parsed data
print("Parsed VRF configurations from PE config:")
for vrf in vrf_configs:
print(vrf)
print("\nParsed Interface configurations from PE config:")
for intf in interface_configs:
print(intf)
print("\nParsed BGP configurations from PE config:")
for bgp in bgp_configs:
print(bgp)
Выход:
Parsed VRF configurations from PE config:
{'name': 'BLUE', 'rd': '', 'export_rt': '', 'import_rt': ''}
{'name': 'RED', 'rd': '', 'export_rt': '', 'import_rt': ''}
Parsed Interface configurations from PE config:
{'name': 'FastEthernet2/0.2', 'description': '', 'vrf': '', 'interface_ip': '', 'interface_dot1q': ''}
{'name': 'FastEthernet3/0.3', 'description': '', 'vrf': '', 'interface_ip': '', 'interface_dot1q': ''}
Parsed BGP configurations from PE config:
{'as_number PE': '100', 'bgp_address-family': '', 'bgp_neighbor_ip': '', 'bgp_neighbor_as': ''}
Конфигурация PE (pe_config.txt):
!-- BASIC PE configuration ------------
vrf definition BLUE
rd 108:108
route-target export 108:108
route-target import 108:108
!
address-family ipv4
exit-address-family
!
vrf definition RED
rd 79:79
route-target export 79:79
route-target import 79:79
!
address-family ipv4
exit-address-family
!
interface FastEthernet2/0.2
description Customer RED
encapsulation dot1q 2
vrf forwarding RED
ip address 10.57.1.5 255.255.255.0
!
interface FastEthernet3/0.3
description Customer BLUE
encapsulation dot1q 3
vrf forwarding BLUE
ip address 10.58.1.5 255.255.255.0
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 6.6.6.6 remote-as 100
neighbor 6.6.6.6 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
neighbor 6.6.6.6 activate
neighbor 6.6.6.6 send-community extended
exit-address-family
!
address-family ipv4 vrf RED
neighbor 10.57.1.7 remote-as 79
neighbor 10.57.1.7 activate
exit-address-family
!
address-family ipv4 vrf BLUE
neighbor 10.58.1.8 remote-as 8
neighbor 10.58.1.8 activate
exit-address-family
!
!-- EOF -------------------------------
Может быть, у кого-то есть хорошая идея?
Спасибо за ваш вклад.
Я ожидаю, что вся информация о VRF, интерфейсах и конфигурации BGP будет указана.
Parsed VRF configurations from PE config:
{'name': 'VRF xx', 'rd': 'xx:xx', 'export_rt': 'xx:xx', 'import_rt': 'xx:xx'}
Parsed Interface configurations from PE config:
{'name': 'FastEthernet2/0.2', 'description': 'xxx', 'vrf': 'VRF xx', 'interface_ip': 'A.B.C.D 255.255.255.252', 'interface_dot1q': 'x'}
Parsed BGP configurations from PE config:
{'as_number PE': '100', 'bgp_address-family': 'VRF xx', 'bgp_neighbor_ip': 'A.B.C.D', 'bgp_neighbor_as': 'xx'}
Подробнее здесь: https://stackoverflow.com/questions/771 ... -bgp-setup
Python ciscoconfparse для поиска конфигурации PE (VRF, INTERFACE, настройка BGP) ⇐ Python
Программы на Python
1770908668
Anonymous
Я пытаюсь использовать CiscoConfParse в конфигурации Cisco IOS и проанализировать полную конфигурацию PE.
Цель состоит в том, чтобы собрать всю необходимую информацию из конфигурации PE (VRF, INTERFACE, настройка BGP).
Я нашел эту библиотеку ciscoconfparse (https://pypi.python.org/pypi/ciscoconfparse).
Код работает только частично и регулярное выражение соответствует правильно, но только первое совпадение (см. также выходные данные ниже).
[b]Код:[/b]
import ciscoconfparse
def parse_config(config_file):
# Create a CiscoConfParse object from the configuration file
config = ciscoconfparse.CiscoConfParse(config_file)
# Parse VRF configurations
vrf_configs = []
for vrf_obj in config.find_objects(r'^vrf definition (\S+)'):
vrf_config = {
'name': vrf_obj.re_match(r'vrf definition (\S+)'),
'rd': vrf_obj.re_match(r'rd (\S+)'),
'export_rt': vrf_obj.re_match(r'route-target export (\S+)'),
'import_rt': vrf_obj.re_match(r'route-target import (\S+)'),
}
vrf_configs.append(vrf_config)
# Parse Interface configurations
interface_configs = []
for intf_obj in config.find_objects(r'^interface'):
interface_config = {
'name': intf_obj.re_match(r'interface (\S+)'),
'description': intf_obj.re_match(r'description (.+)'),
'vrf': intf_obj.re_match(r'vrf forwarding (\S+)'),
'interface_ip': intf_obj.re_match(r'ip address (\S+) (\S+)'),
'interface_dot1q': intf_obj.re_match(r'encapsulation dot1q (\S+)'),
}
interface_configs.append(interface_config)
# Parse BGP configurations
bgp_configs = []
for bgp_obj in config.find_objects(r'^router bgp (\S+)'):
bgp_config = {
'as_number PE': bgp_obj.re_match(r'router bgp (\d+)'),
'bgp_address-family': bgp_obj.re_match(r'address-family ipv4 vrf (\S+)'),
'bgp_neighbor_ip': bgp_obj.re_match(r'neighbor (\S+) remote-as (\d+)'),
'bgp_neighbor_as': bgp_obj.re_match(r'remote-as (\d+)'),
}
bgp_configs.append(bgp_config)
return vrf_configs, interface_configs, bgp_configs
# Parse the PE router configuration
vrf_configs, interface_configs, bgp_configs = parse_config('pe_config.txt')
# Print parsed data
print("Parsed VRF configurations from PE config:")
for vrf in vrf_configs:
print(vrf)
print("\nParsed Interface configurations from PE config:")
for intf in interface_configs:
print(intf)
print("\nParsed BGP configurations from PE config:")
for bgp in bgp_configs:
print(bgp)
[b]Выход:[/b]
Parsed VRF configurations from PE config:
{'name': 'BLUE', 'rd': '', 'export_rt': '', 'import_rt': ''}
{'name': 'RED', 'rd': '', 'export_rt': '', 'import_rt': ''}
Parsed Interface configurations from PE config:
{'name': 'FastEthernet2/0.2', 'description': '', 'vrf': '', 'interface_ip': '', 'interface_dot1q': ''}
{'name': 'FastEthernet3/0.3', 'description': '', 'vrf': '', 'interface_ip': '', 'interface_dot1q': ''}
Parsed BGP configurations from PE config:
{'as_number PE': '100', 'bgp_address-family': '', 'bgp_neighbor_ip': '', 'bgp_neighbor_as': ''}
[b]Конфигурация PE (pe_config.txt):[/b]
!-- BASIC PE configuration ------------
vrf definition BLUE
rd 108:108
route-target export 108:108
route-target import 108:108
!
address-family ipv4
exit-address-family
!
vrf definition RED
rd 79:79
route-target export 79:79
route-target import 79:79
!
address-family ipv4
exit-address-family
!
interface FastEthernet2/0.2
description Customer RED
encapsulation dot1q 2
vrf forwarding RED
ip address 10.57.1.5 255.255.255.0
!
interface FastEthernet3/0.3
description Customer BLUE
encapsulation dot1q 3
vrf forwarding BLUE
ip address 10.58.1.5 255.255.255.0
!
router bgp 100
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 6.6.6.6 remote-as 100
neighbor 6.6.6.6 update-source Loopback0
!
address-family ipv4
exit-address-family
!
address-family vpnv4
neighbor 6.6.6.6 activate
neighbor 6.6.6.6 send-community extended
exit-address-family
!
address-family ipv4 vrf RED
neighbor 10.57.1.7 remote-as 79
neighbor 10.57.1.7 activate
exit-address-family
!
address-family ipv4 vrf BLUE
neighbor 10.58.1.8 remote-as 8
neighbor 10.58.1.8 activate
exit-address-family
!
!-- EOF -------------------------------
Может быть, у кого-то есть хорошая идея?
Спасибо за ваш вклад.
Я ожидаю, что вся информация о VRF, интерфейсах и конфигурации BGP будет указана.
Parsed VRF configurations from PE config:
{'name': 'VRF xx', 'rd': 'xx:xx', 'export_rt': 'xx:xx', 'import_rt': 'xx:xx'}
Parsed Interface configurations from PE config:
{'name': 'FastEthernet2/0.2', 'description': 'xxx', 'vrf': 'VRF xx', 'interface_ip': 'A.B.C.D 255.255.255.252', 'interface_dot1q': 'x'}
Parsed BGP configurations from PE config:
{'as_number PE': '100', 'bgp_address-family': 'VRF xx', 'bgp_neighbor_ip': 'A.B.C.D', 'bgp_neighbor_as': 'xx'}
Подробнее здесь: [url]https://stackoverflow.com/questions/77166242/python-ciscoconfparse-to-find-pe-configuration-vrf-interface-bgp-setup[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия