seaf-netconf-parser 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- seaf_netconf_parser-0.1.0/.$network_diagram.drawio.dtmp +42 -0
- seaf_netconf_parser-0.1.0/.idea/.gitignore +3 -0
- seaf_netconf_parser-0.1.0/.idea/NetConf_Parser.iml +12 -0
- seaf_netconf_parser-0.1.0/.idea/inspectionProfiles/profiles_settings.xml +6 -0
- seaf_netconf_parser-0.1.0/.idea/misc.xml +7 -0
- seaf_netconf_parser-0.1.0/.idea/modules.xml +8 -0
- seaf_netconf_parser-0.1.0/.idea/vcs.xml +6 -0
- seaf_netconf_parser-0.1.0/.idea/workspace.xml +83 -0
- seaf_netconf_parser-0.1.0/LICENSE +21 -0
- seaf_netconf_parser-0.1.0/PKG-INFO +175 -0
- seaf_netconf_parser-0.1.0/README.md +156 -0
- seaf_netconf_parser-0.1.0/VENDOR_SUPPORT.md +351 -0
- seaf_netconf_parser-0.1.0/__init__.py +0 -0
- seaf_netconf_parser-0.1.0/data/running.current +258 -0
- seaf_netconf_parser-0.1.0/lib/device_analyzer.py +2554 -0
- seaf_netconf_parser-0.1.0/lib/network_visualizer.py +1667 -0
- seaf_netconf_parser-0.1.0/lib/pattern_validator.py +274 -0
- seaf_netconf_parser-0.1.0/lib/seaf_converter.py +874 -0
- seaf_netconf_parser-0.1.0/main.py +111 -0
- seaf_netconf_parser-0.1.0/network_details.txt +160 -0
- seaf_netconf_parser-0.1.0/network_diagram.drawio +32 -0
- seaf_netconf_parser-0.1.0/patterns/devices/arista.json +54 -0
- seaf_netconf_parser-0.1.0/patterns/devices/aruba.json +54 -0
- seaf_netconf_parser-0.1.0/patterns/devices/b4com.json +104 -0
- seaf_netconf_parser-0.1.0/patterns/devices/cisco.json +476 -0
- seaf_netconf_parser-0.1.0/patterns/devices/cisco_asa.json +134 -0
- seaf_netconf_parser-0.1.0/patterns/devices/dell.json +55 -0
- seaf_netconf_parser-0.1.0/patterns/devices/dlink.json +105 -0
- seaf_netconf_parser-0.1.0/patterns/devices/f5.json +61 -0
- seaf_netconf_parser-0.1.0/patterns/devices/fortinet.json +52 -0
- seaf_netconf_parser-0.1.0/patterns/devices/hpe_aruba.json +125 -0
- seaf_netconf_parser-0.1.0/patterns/devices/huawei.json +108 -0
- seaf_netconf_parser-0.1.0/patterns/devices/juniper.json +82 -0
- seaf_netconf_parser-0.1.0/patterns/devices/mikrotik.json +129 -0
- seaf_netconf_parser-0.1.0/patterns/devices/paloalto.json +52 -0
- seaf_netconf_parser-0.1.0/patterns/devices/qtech.json +108 -0
- seaf_netconf_parser-0.1.0/patterns/devices/tfortis.json +102 -0
- seaf_netconf_parser-0.1.0/patterns/devices/unknown.json +99 -0
- seaf_netconf_parser-0.1.0/patterns/drawio/base.drawio +12 -0
- seaf_netconf_parser-0.1.0/patterns/drawio/templates/index.yaml +56 -0
- seaf_netconf_parser-0.1.0/patterns/drawio/templates/stencils.yaml +32 -0
- seaf_netconf_parser-0.1.0/patterns/schema.json +340 -0
- seaf_netconf_parser-0.1.0/patterns/seaf/base_entity.yaml +40 -0
- seaf_netconf_parser-0.1.0/patterns/seaf/device.yaml +84 -0
- seaf_netconf_parser-0.1.0/patterns/seaf/logical_link.yaml +82 -0
- seaf_netconf_parser-0.1.0/patterns/seaf/network.yaml +117 -0
- seaf_netconf_parser-0.1.0/pyproject.toml +39 -0
- seaf_netconf_parser-0.1.0/requirements.txt +2 -0
- seaf_netconf_parser-0.1.0/scripts/collect_running_prev.py +250 -0
- seaf_netconf_parser-0.1.0/seaf.yaml +35 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.3.0 Chrome/140.0.7339.249 Electron/38.7.2 Safari/537.36">
|
|
2
|
+
<diagram name="Network Topology" id="rMuX2oWwCx14g4Km6Em1">
|
|
3
|
+
<mxGraphModel dx="2239" dy="847" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
|
4
|
+
<root>
|
|
5
|
+
<mxCell id="0" />
|
|
6
|
+
<mxCell id="1" parent="0" value="Physical links" />
|
|
7
|
+
<mxCell id="QHCq0N9UDPYM9EY1-Xmt-4" edge="1" parent="1" source="msk-m1-bb" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0.98;exitDx=0;exitDy=0;exitPerimeter=0;">
|
|
8
|
+
<mxGeometry relative="1" as="geometry">
|
|
9
|
+
<mxPoint x="-350" y="260" as="targetPoint" />
|
|
10
|
+
</mxGeometry>
|
|
11
|
+
</mxCell>
|
|
12
|
+
<object label="<font style="color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); line-height: 140%; font-size: 9px; ">&nbsp;msk-m1-bb&nbsp;</font>" title="msk-m1-bb" description="Cisco Коммутатор (свитч)" app_components="[]" stand="[]" external_id="" type="Коммутатор (свитч)" model="Catalyst 4500/6500 Core" realization_type="" address="" location="[]" segment="" network_connection="['10_99_11_0_24']" purpose="" OID="msk-m1-bb" schema="seaf.company.ta.components.networks" id="msk-m1-bb">
|
|
13
|
+
<mxCell parent="1" style="shape=mxgraph.cisco.switches.workgroup_switch;sketch=0;html=1;pointerEvents=1;dashed=0;fillColor=#036897;strokeColor=#ffffff;strokeWidth=2;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;labelBackgroundColor=default;fontSize=12;fontColor=#FFFFFF;" vertex="1">
|
|
14
|
+
<mxGeometry height="30" width="90" y="165" as="geometry" />
|
|
15
|
+
</mxCell>
|
|
16
|
+
</object>
|
|
17
|
+
<object label="leaf_label" OID="leaf_label" id="leaf_label">
|
|
18
|
+
<mxCell parent="1" style="text" vertex="1">
|
|
19
|
+
<mxGeometry height="30" width="400" y="250" as="geometry" />
|
|
20
|
+
</mxCell>
|
|
21
|
+
</object>
|
|
22
|
+
<mxCell id="2" parent="0" value="Mgm networks" visible="0" />
|
|
23
|
+
<object label="10.99.11.0/24" title="" description="" app_components="[]" stand="[]" external_id="" type="LAN" location="[]" lan_type="['Проводная', 'Беспроводная']" segment="[]" vlan="0" ipnetwork="10.99.11.0/24" purpose="" vrf="" OID="10_99_11_0_24" schema="seaf.company.ta.services.networks" id="10_99_11_0_24">
|
|
24
|
+
<mxCell parent="2" style="verticalAlign=middle;align=center;vsdxID=35397;rotation=0;fillColor=#c0cfe2;gradientColor=none;shape=stencil(nZFLDsIwDERP4y0KyQKxLuUCnCAihliEpEpL+ZyetANS6YJFs7JnXmxpTKZqvW2YtGq7nC58F9d5MjvSWqLnLF2pyNRkqlPKfM7pFh36xhZSq1Fhhz/rgdbK5uNBXgxts9r+PjAYck39sPwBVMF6foYp9HugQeIE/ZqL4D/oQnC2vhRjPAhOQkC6U38eZ5FwClO/AQ==);strokeColor=#000000;labelBackgroundColor=none;rounded=1;html=1;whiteSpace=wrap;" vertex="1">
|
|
25
|
+
<mxGeometry height="20" width="200" as="geometry" />
|
|
26
|
+
</mxCell>
|
|
27
|
+
</object>
|
|
28
|
+
<object label="" parent="3" src_label="Vlan11" source="msk-m1-bb" target="10_99_11_0_24" id="aaf71e4e9356c07353135b79e9fdfcb8">
|
|
29
|
+
<mxCell edge="1" parent="2" source="msk-m1-bb" style="endArrow=none;html=1;strokeColor=#43a047;strokeWidth=2;dashed=1;" target="10_99_11_0_24">
|
|
30
|
+
<mxGeometry relative="1" as="geometry" />
|
|
31
|
+
</mxCell>
|
|
32
|
+
</object>
|
|
33
|
+
<mxCell id="aaf71e4e9356c07353135b79e9fdfcb8-src" connectable="0" parent="aaf71e4e9356c07353135b79e9fdfcb8" style="labelBackgroundColor=#ffffff;;" value="Vlan11" vertex="1">
|
|
34
|
+
<mxGeometry relative="1" x="-0.5" as="geometry">
|
|
35
|
+
<mxPoint as="offset" />
|
|
36
|
+
</mxGeometry>
|
|
37
|
+
</mxCell>
|
|
38
|
+
<mxCell id="3" parent="0" value="Logical Links" visible="0" />
|
|
39
|
+
</root>
|
|
40
|
+
</mxGraphModel>
|
|
41
|
+
</diagram>
|
|
42
|
+
</mxfile>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="PYTHON_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager">
|
|
4
|
+
<content url="file://$MODULE_DIR$" />
|
|
5
|
+
<orderEntry type="jdk" jdkName="Python 3.10 (DrawIo_maker)" jdkType="Python SDK" />
|
|
6
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
7
|
+
</component>
|
|
8
|
+
<component name="PyDocumentationSettings">
|
|
9
|
+
<option name="format" value="PLAIN" />
|
|
10
|
+
<option name="myDocStringFormat" value="Plain" />
|
|
11
|
+
</component>
|
|
12
|
+
</module>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="Black">
|
|
4
|
+
<option name="sdkName" value="Python 3.10 (DrawIo_maker)" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (DrawIo_maker)" project-jdk-type="Python SDK" />
|
|
7
|
+
</project>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/NetConf_Parser.iml" filepath="$PROJECT_DIR$/.idea/NetConf_Parser.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="AutoImportSettings">
|
|
4
|
+
<option name="autoReloadType" value="SELECTIVE" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ChangeListManager">
|
|
7
|
+
<list default="true" id="c66ea31d-10de-42cf-9530-da0303ad047e" name="Changes" comment="Подготовка пакета" />
|
|
8
|
+
<option name="SHOW_DIALOG" value="false" />
|
|
9
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
10
|
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
11
|
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
12
|
+
</component>
|
|
13
|
+
<component name="Git.Settings">
|
|
14
|
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
15
|
+
</component>
|
|
16
|
+
<component name="GitHubPullRequestSearchHistory">{
|
|
17
|
+
"lastFilter": {
|
|
18
|
+
"state": "OPEN",
|
|
19
|
+
"assignee": "koa73"
|
|
20
|
+
}
|
|
21
|
+
}</component>
|
|
22
|
+
<component name="GithubPullRequestsUISettings">{
|
|
23
|
+
"selectedUrlAndAccountId": {
|
|
24
|
+
"url": "https://github.com/koa73/NetConf_Parser.git",
|
|
25
|
+
"accountId": "4ba22a36-1291-4512-99df-abad8da17340"
|
|
26
|
+
}
|
|
27
|
+
}</component>
|
|
28
|
+
<component name="ProjectColorInfo">{
|
|
29
|
+
"associatedIndex": 1
|
|
30
|
+
}</component>
|
|
31
|
+
<component name="ProjectId" id="3E2clOnP6twFesEvHAORJEnk3PA" />
|
|
32
|
+
<component name="ProjectViewState">
|
|
33
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
|
34
|
+
<option name="showLibraryContents" value="true" />
|
|
35
|
+
</component>
|
|
36
|
+
<component name="PropertiesComponent"><![CDATA[{
|
|
37
|
+
"keyToString": {
|
|
38
|
+
"Python.main.executor": "Run",
|
|
39
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
40
|
+
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
|
41
|
+
"RunOnceActivity.git.unshallow": "true",
|
|
42
|
+
"git-widget-placeholder": "master"
|
|
43
|
+
}
|
|
44
|
+
}]]></component>
|
|
45
|
+
<component name="SharedIndexes">
|
|
46
|
+
<attachedChunks>
|
|
47
|
+
<set>
|
|
48
|
+
<option value="bundled-python-sdk-f69e5c277ee4-cbfc7b97e6b2-com.jetbrains.pycharm.community.sharedIndexes.bundled-PC-252.27397.106" />
|
|
49
|
+
</set>
|
|
50
|
+
</attachedChunks>
|
|
51
|
+
</component>
|
|
52
|
+
<component name="TaskManager">
|
|
53
|
+
<task active="true" id="Default" summary="Default task">
|
|
54
|
+
<changelist id="c66ea31d-10de-42cf-9530-da0303ad047e" name="Changes" comment="" />
|
|
55
|
+
<created>1779380257236</created>
|
|
56
|
+
<option name="number" value="Default" />
|
|
57
|
+
<option name="presentableId" value="Default" />
|
|
58
|
+
<updated>1779380257236</updated>
|
|
59
|
+
</task>
|
|
60
|
+
<task id="LOCAL-00001" summary="Подготовка пакета">
|
|
61
|
+
<option name="closed" value="true" />
|
|
62
|
+
<created>1793359251981</created>
|
|
63
|
+
<option name="number" value="00001" />
|
|
64
|
+
<option name="presentableId" value="LOCAL-00001" />
|
|
65
|
+
<option name="project" value="LOCAL" />
|
|
66
|
+
<updated>1793359251981</updated>
|
|
67
|
+
</task>
|
|
68
|
+
<task id="LOCAL-00002" summary="Подготовка пакета">
|
|
69
|
+
<option name="closed" value="true" />
|
|
70
|
+
<created>1793359898491</created>
|
|
71
|
+
<option name="number" value="00002" />
|
|
72
|
+
<option name="presentableId" value="LOCAL-00002" />
|
|
73
|
+
<option name="project" value="LOCAL" />
|
|
74
|
+
<updated>1793359898491</updated>
|
|
75
|
+
</task>
|
|
76
|
+
<option name="localTasksCounter" value="3" />
|
|
77
|
+
<servers />
|
|
78
|
+
</component>
|
|
79
|
+
<component name="VcsManagerConfiguration">
|
|
80
|
+
<MESSAGE value="Подготовка пакета" />
|
|
81
|
+
<option name="LAST_COMMIT_MESSAGE" value="Подготовка пакета" />
|
|
82
|
+
</component>
|
|
83
|
+
</project>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 koa73@bk.ru
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: seaf-netconf-parser
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Система анализа конфигураций сетевого оборудования для автоматического построения топологий сети и конвертации в формат SEAF (System Enterprise Architecture Framework).
|
|
5
|
+
Project-URL: Homepage, https://github.com/koa73/NetConf_Parser
|
|
6
|
+
Project-URL: Issues, https://github.com
|
|
7
|
+
Author-email: Kutsenko Oleg <koa73@bk.ru>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Intended Audience :: System Administrators
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Topic :: System :: Networking
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Requires-Dist: n2g>=0.2.0
|
|
17
|
+
Requires-Dist: pyyaml>=6.0
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# NetConf Parser & SEAF Converter
|
|
21
|
+
|
|
22
|
+
Система анализа конфигураций сетевого оборудования для автоматического построения топологий сети и конвертации в формат SEAF (System Enterprise Architecture Framework).
|
|
23
|
+
|
|
24
|
+
## 📌 Описание
|
|
25
|
+
|
|
26
|
+
Этот проект позволяет автоматически анализировать конфигурационные файлы сетевого оборудования разных производителей, извлекать структурированную информацию, строить сетевые топологии и конвертировать данные в формат SEAF для использования в системах архитектурного моделирования.
|
|
27
|
+
|
|
28
|
+
## 🚀 Основные возможности
|
|
29
|
+
|
|
30
|
+
### Анализ сетевого оборудования
|
|
31
|
+
- **Автоматическое определение вендора** по сигнатурам конфигурации
|
|
32
|
+
- **Извлечение данных устройства**: имя, модель, тип, VLAN, маршрутизируемые сети
|
|
33
|
+
- **Поддержка 9+ производителей**:
|
|
34
|
+
- Cisco (IOS, NX-OS, ASA)
|
|
35
|
+
- Juniper (Junos)
|
|
36
|
+
- Huawei (Enterprise, Carrier)
|
|
37
|
+
- MikroTik (RouterOS)
|
|
38
|
+
- F5 (BIG-IP)
|
|
39
|
+
- Arista (EOS)
|
|
40
|
+
- Palo Alto Networks (PAN-OS)
|
|
41
|
+
- Fortinet (FortiOS)
|
|
42
|
+
- Aruba/HPE
|
|
43
|
+
- Dell Networking
|
|
44
|
+
|
|
45
|
+
### Анализ топологии
|
|
46
|
+
- **Физические связи** (Physical P2P Links) — обнаружение соединений между устройствами
|
|
47
|
+
- **Управленческие сети** (Management Networks) — интерфейсы управления
|
|
48
|
+
- **Логические связи** (Logical Links) — VXLAN overlay, сервисные сети
|
|
49
|
+
|
|
50
|
+
### Визуализация
|
|
51
|
+
- **Генерация диаграмм draw.io** с использованием шаблонов
|
|
52
|
+
- **5 алгоритмов размещения**:
|
|
53
|
+
- Круговой (circular)
|
|
54
|
+
- Сеточный (grid)
|
|
55
|
+
- Силовой (force-directed)
|
|
56
|
+
- Кластерный (clustered)
|
|
57
|
+
- Spine-Leaf (оптимально для CLOS-архитектур)
|
|
58
|
+
|
|
59
|
+
### SEAF Converter
|
|
60
|
+
- **Парсинг YAML-схем** из каталога `patterns/seaf/`
|
|
61
|
+
- **Поддержка наследования** через `allOf` (базовые сущности)
|
|
62
|
+
- **Поддержка вариантов** через `oneOf` (LAN/WAN)
|
|
63
|
+
- **Генерация шаблонов** для заполнения данными
|
|
64
|
+
- **Конвертация DRAWIO → YAML** для экспорта в SEAF
|
|
65
|
+
|
|
66
|
+
## 📂 Структура проекта
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
NetConf_Parser/
|
|
70
|
+
├── main.py # Точка входа
|
|
71
|
+
├── requirements.txt # Зависимости
|
|
72
|
+
├── Readme.md # Документация
|
|
73
|
+
├── network_diagram.drawio # Исходная диаграмма
|
|
74
|
+
├── network_details.txt # Детальный отчёт
|
|
75
|
+
├── seaf.yaml # Экспортированные данные SEAF
|
|
76
|
+
│
|
|
77
|
+
├── lib/
|
|
78
|
+
│ ├── device_analyzer.py # Анализ устройств и топологии
|
|
79
|
+
│ ├── network_visualizer.py # Визуализация в draw.io
|
|
80
|
+
│ └── seaf_converter.py # Конвертер SEAF схем
|
|
81
|
+
│
|
|
82
|
+
├── patterns/
|
|
83
|
+
│ ├── devices/ # Шаблоны вендоров (JSON)
|
|
84
|
+
│ │ ├── cisco.json
|
|
85
|
+
│ │ ├── juniper.json
|
|
86
|
+
│ │ ├── huawei.json
|
|
87
|
+
│ │ └── ...
|
|
88
|
+
│ ├── drawio/ # Шаблоны draw.io
|
|
89
|
+
│ │ ├── base.drawio
|
|
90
|
+
│ │ └── templates/
|
|
91
|
+
│ │ ├── index.yaml
|
|
92
|
+
│ │ └── stencils.yaml
|
|
93
|
+
│ └── seaf/ # YAML-схемы SEAF
|
|
94
|
+
│ ├── base_entity.yaml # Базовые сущности
|
|
95
|
+
│ ├── network.yaml # Сети (LAN/WAN)
|
|
96
|
+
│ ├── device.yaml # Сетевые устройства
|
|
97
|
+
│ └── logical_link.yaml # Логические связи
|
|
98
|
+
│
|
|
99
|
+
└── data/ # Конфигурационные файлы
|
|
100
|
+
└── *.cfg
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 🛠 Требования
|
|
104
|
+
|
|
105
|
+
- Python 3.10+
|
|
106
|
+
- PyYAML (обработка YAML)
|
|
107
|
+
- N2G (работа с draw.io)
|
|
108
|
+
- pytest (тестирование)
|
|
109
|
+
|
|
110
|
+
## ⚙️ Установка
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Клонирование репозитория
|
|
114
|
+
git clone https://github.com/yourusername/netconf-parser.git
|
|
115
|
+
cd netconf-parser
|
|
116
|
+
|
|
117
|
+
# Создание виртуальной среды
|
|
118
|
+
python3 -m venv .venv
|
|
119
|
+
source .venv/bin/activate # Linux/Mac
|
|
120
|
+
# .venv\Scripts\activate # Windows
|
|
121
|
+
|
|
122
|
+
# Установка зависимостей
|
|
123
|
+
pip install -r requirements.txt
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 🚀 Быстрый старт
|
|
127
|
+
|
|
128
|
+
### 1. Анализ конфигураций
|
|
129
|
+
|
|
130
|
+
Поместите конфигурационные файлы в папку `data/`:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
mkdir data
|
|
134
|
+
cp /path/to/configs/*.cfg data/
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Запустите анализ:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
python3 main.py
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 2. Интерактивный режим
|
|
144
|
+
|
|
145
|
+
После анализа программа предложит:
|
|
146
|
+
- Выбрать алгоритм размещения для диаграммы
|
|
147
|
+
- Конвертировать данные из DRAWIO в YAML формат SEAF
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
Выберите алгоритм размещения объектов на диаграмме:
|
|
151
|
+
1. Круговой алгоритм
|
|
152
|
+
2. Сеточный алгоритм
|
|
153
|
+
3. Силовой алгоритм
|
|
154
|
+
4. Кластерный алгоритм
|
|
155
|
+
5. Spine-Leaf-Border Leaf (оптимально для CLOS архитектуры)
|
|
156
|
+
|
|
157
|
+
Произвести конвертацию данных из drawio файла? (Y/N): Y
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## 📋 Выходные файлы
|
|
161
|
+
|
|
162
|
+
| Файл | Описание |
|
|
163
|
+
|------|----------|
|
|
164
|
+
| `network_details.txt` | Детальный отчёт об анализе |
|
|
165
|
+
| `network_diagram.drawio` | Диаграмма топологии |
|
|
166
|
+
| `seaf.yaml` | Экспортированные данные SEAF |
|
|
167
|
+
|
|
168
|
+
## 📞 Контакты
|
|
169
|
+
|
|
170
|
+
- **GitHub**: https://github.com/yourusername/netconf-parser
|
|
171
|
+
- **Issues**: https://github.com/yourusername/netconf-parser/issues
|
|
172
|
+
|
|
173
|
+
## 📄 Лицензия
|
|
174
|
+
|
|
175
|
+
MIT License
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# NetConf Parser & SEAF Converter
|
|
2
|
+
|
|
3
|
+
Система анализа конфигураций сетевого оборудования для автоматического построения топологий сети и конвертации в формат SEAF (System Enterprise Architecture Framework).
|
|
4
|
+
|
|
5
|
+
## 📌 Описание
|
|
6
|
+
|
|
7
|
+
Этот проект позволяет автоматически анализировать конфигурационные файлы сетевого оборудования разных производителей, извлекать структурированную информацию, строить сетевые топологии и конвертировать данные в формат SEAF для использования в системах архитектурного моделирования.
|
|
8
|
+
|
|
9
|
+
## 🚀 Основные возможности
|
|
10
|
+
|
|
11
|
+
### Анализ сетевого оборудования
|
|
12
|
+
- **Автоматическое определение вендора** по сигнатурам конфигурации
|
|
13
|
+
- **Извлечение данных устройства**: имя, модель, тип, VLAN, маршрутизируемые сети
|
|
14
|
+
- **Поддержка 9+ производителей**:
|
|
15
|
+
- Cisco (IOS, NX-OS, ASA)
|
|
16
|
+
- Juniper (Junos)
|
|
17
|
+
- Huawei (Enterprise, Carrier)
|
|
18
|
+
- MikroTik (RouterOS)
|
|
19
|
+
- F5 (BIG-IP)
|
|
20
|
+
- Arista (EOS)
|
|
21
|
+
- Palo Alto Networks (PAN-OS)
|
|
22
|
+
- Fortinet (FortiOS)
|
|
23
|
+
- Aruba/HPE
|
|
24
|
+
- Dell Networking
|
|
25
|
+
|
|
26
|
+
### Анализ топологии
|
|
27
|
+
- **Физические связи** (Physical P2P Links) — обнаружение соединений между устройствами
|
|
28
|
+
- **Управленческие сети** (Management Networks) — интерфейсы управления
|
|
29
|
+
- **Логические связи** (Logical Links) — VXLAN overlay, сервисные сети
|
|
30
|
+
|
|
31
|
+
### Визуализация
|
|
32
|
+
- **Генерация диаграмм draw.io** с использованием шаблонов
|
|
33
|
+
- **5 алгоритмов размещения**:
|
|
34
|
+
- Круговой (circular)
|
|
35
|
+
- Сеточный (grid)
|
|
36
|
+
- Силовой (force-directed)
|
|
37
|
+
- Кластерный (clustered)
|
|
38
|
+
- Spine-Leaf (оптимально для CLOS-архитектур)
|
|
39
|
+
|
|
40
|
+
### SEAF Converter
|
|
41
|
+
- **Парсинг YAML-схем** из каталога `patterns/seaf/`
|
|
42
|
+
- **Поддержка наследования** через `allOf` (базовые сущности)
|
|
43
|
+
- **Поддержка вариантов** через `oneOf` (LAN/WAN)
|
|
44
|
+
- **Генерация шаблонов** для заполнения данными
|
|
45
|
+
- **Конвертация DRAWIO → YAML** для экспорта в SEAF
|
|
46
|
+
|
|
47
|
+
## 📂 Структура проекта
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
NetConf_Parser/
|
|
51
|
+
├── main.py # Точка входа
|
|
52
|
+
├── requirements.txt # Зависимости
|
|
53
|
+
├── Readme.md # Документация
|
|
54
|
+
├── network_diagram.drawio # Исходная диаграмма
|
|
55
|
+
├── network_details.txt # Детальный отчёт
|
|
56
|
+
├── seaf.yaml # Экспортированные данные SEAF
|
|
57
|
+
│
|
|
58
|
+
├── lib/
|
|
59
|
+
│ ├── device_analyzer.py # Анализ устройств и топологии
|
|
60
|
+
│ ├── network_visualizer.py # Визуализация в draw.io
|
|
61
|
+
│ └── seaf_converter.py # Конвертер SEAF схем
|
|
62
|
+
│
|
|
63
|
+
├── patterns/
|
|
64
|
+
│ ├── devices/ # Шаблоны вендоров (JSON)
|
|
65
|
+
│ │ ├── cisco.json
|
|
66
|
+
│ │ ├── juniper.json
|
|
67
|
+
│ │ ├── huawei.json
|
|
68
|
+
│ │ └── ...
|
|
69
|
+
│ ├── drawio/ # Шаблоны draw.io
|
|
70
|
+
│ │ ├── base.drawio
|
|
71
|
+
│ │ └── templates/
|
|
72
|
+
│ │ ├── index.yaml
|
|
73
|
+
│ │ └── stencils.yaml
|
|
74
|
+
│ └── seaf/ # YAML-схемы SEAF
|
|
75
|
+
│ ├── base_entity.yaml # Базовые сущности
|
|
76
|
+
│ ├── network.yaml # Сети (LAN/WAN)
|
|
77
|
+
│ ├── device.yaml # Сетевые устройства
|
|
78
|
+
│ └── logical_link.yaml # Логические связи
|
|
79
|
+
│
|
|
80
|
+
└── data/ # Конфигурационные файлы
|
|
81
|
+
└── *.cfg
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 🛠 Требования
|
|
85
|
+
|
|
86
|
+
- Python 3.10+
|
|
87
|
+
- PyYAML (обработка YAML)
|
|
88
|
+
- N2G (работа с draw.io)
|
|
89
|
+
- pytest (тестирование)
|
|
90
|
+
|
|
91
|
+
## ⚙️ Установка
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Клонирование репозитория
|
|
95
|
+
git clone https://github.com/yourusername/netconf-parser.git
|
|
96
|
+
cd netconf-parser
|
|
97
|
+
|
|
98
|
+
# Создание виртуальной среды
|
|
99
|
+
python3 -m venv .venv
|
|
100
|
+
source .venv/bin/activate # Linux/Mac
|
|
101
|
+
# .venv\Scripts\activate # Windows
|
|
102
|
+
|
|
103
|
+
# Установка зависимостей
|
|
104
|
+
pip install -r requirements.txt
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 🚀 Быстрый старт
|
|
108
|
+
|
|
109
|
+
### 1. Анализ конфигураций
|
|
110
|
+
|
|
111
|
+
Поместите конфигурационные файлы в папку `data/`:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
mkdir data
|
|
115
|
+
cp /path/to/configs/*.cfg data/
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Запустите анализ:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
python3 main.py
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 2. Интерактивный режим
|
|
125
|
+
|
|
126
|
+
После анализа программа предложит:
|
|
127
|
+
- Выбрать алгоритм размещения для диаграммы
|
|
128
|
+
- Конвертировать данные из DRAWIO в YAML формат SEAF
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
Выберите алгоритм размещения объектов на диаграмме:
|
|
132
|
+
1. Круговой алгоритм
|
|
133
|
+
2. Сеточный алгоритм
|
|
134
|
+
3. Силовой алгоритм
|
|
135
|
+
4. Кластерный алгоритм
|
|
136
|
+
5. Spine-Leaf-Border Leaf (оптимально для CLOS архитектуры)
|
|
137
|
+
|
|
138
|
+
Произвести конвертацию данных из drawio файла? (Y/N): Y
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## 📋 Выходные файлы
|
|
142
|
+
|
|
143
|
+
| Файл | Описание |
|
|
144
|
+
|------|----------|
|
|
145
|
+
| `network_details.txt` | Детальный отчёт об анализе |
|
|
146
|
+
| `network_diagram.drawio` | Диаграмма топологии |
|
|
147
|
+
| `seaf.yaml` | Экспортированные данные SEAF |
|
|
148
|
+
|
|
149
|
+
## 📞 Контакты
|
|
150
|
+
|
|
151
|
+
- **GitHub**: https://github.com/yourusername/netconf-parser
|
|
152
|
+
- **Issues**: https://github.com/yourusername/netconf-parser/issues
|
|
153
|
+
|
|
154
|
+
## 📄 Лицензия
|
|
155
|
+
|
|
156
|
+
MIT License
|