Интересно, может ли perl выполнить синтаксический разбор конфигурации junos и преобразовать в csv.perl parsing configuration braces style
interfaces {
apply-groups policer-arp;
ge-1/0/0 {
description "*** Description ***";
unit 0 {
family inet {
address 10.100.200.1/24 {
arp 10.100.200.2 mac 00:16:d4:e7:9b:de;
}
}
}
}
ge-1/0/2 {
description " Description ";
vlan-tagging;
unit 101 {
description "NODEB_CLUSTER#101";
vlan-id 101;
family inet {
address 10.187.132.3/27 {
vrrp-group 1 {
virtual-address 10.187.132.1;
priority 190;
accept-data;
}
}
}
}
unit 102 {
description "Description";
vlan-id 102;
family inet {
address 10.187.132.35/27 {
vrrp-group 2 {
virtual-address 10.187.132.33;
priority 200;
accept-data;
}
}
}
}
unit 103 {
description "NODEB_CLUSTER#103";
vlan-id 103;
family inet {
address 10.187.132.67/27 {
vrrp-group 3 {
virtual-address 10.187.132.65;
priority 190;
accept-data;
}
}
}
}
unit 104 {
description "NODEB_CLUSTER#104";
vlan-id 104;
family inet {
address 10.187.132.99/27 {
vrrp-group 4 {
virtual-address 10.187.132.97;
priority 200;
accept-data;
}
}
}
}
Выход:
Interface, IP Address, VLAN, Virtual-Address, Vrrp-group, Vrrp Priority
ge-1/0/0,10.100.200.1/24, , , , ,
ge-1/0/2, , , , , ,
ge-1/0/2.101,10.187.132.3/27,101,10.187.132.1,1,190
ge-1/0/2,102,10.187.132.35/27,102,10.187.132.33,2,200
ge-1/0/2,103,10.187.132.67/27,103,10.187.132.65,3,190
ge-1/0/2,104,10.187.132.99/27,104,10.187.132.97,4,200
Так вкратце, мы преобразуем Junos конфигурации в файл CSV для конфигурации интерфейса мы отсчитываем интерфейс GE-1/0/2, чем GE-1/0/2.101 как это интерфейс для vlan 101, ge-1/0/2.102 для vlan 102 и так далее. Может ли perl анализировать его или есть более быстрые способы его преобразования?
Perl (или любой другой язык программирования) может сделать это. Что вы пробовали? – choroba
Я пробовал сначала прочитать ввод, а затем grep с if ($ _ = ~ //). Но трудно получить значение, когда в конфиге есть дублирующее значение. Я задаюсь вопросом, есть ли более быстрые пути? – rabka