Я хочу автоматизировать диаграмму топологии сети, используя python. Я новичок в Python, поэтому, пожалуйста, потерпите меня. Проведя некоторые исследования, я обнаружил, что я могу использовать python для создания графических файлов, которые могут быть прочитаны yEd.
Я учусь использовать Networkx для создания файлов graphml. Пока я могу создавать узлы, подключать их и добавлять метки к узлам (эти метки будут именами хостов). Теперь мне нужно знать, как я могу добавить метки к краям (эти метки были бы интерфейсами). Например:
Пример топологии
Если возможно, я хотел бы знать, как добавить пользовательское изображение для каждого узла (по умолчанию фигура представляет собой квадрат, но я хотел бы использовать файл png маршрутизатора).
Если это невозможно, было бы полезно узнать, как редактировать высоту и ширину фигуры, а также отключить стрелки.
Я просмотрел документы на веб-сайте networkx, но не нашел, как внести эти изменения непосредственно в объект графа. Единственный способ, которым я это видел, - рисовать график, например, используя следующую функцию: nx.draw_networkx_labels (G, pos, метки, font_size = 15, стрелки = False), но это не то, что мне нужно, потому что это не сохраняется в файл graphml.
Если кто-то может помочь мне в этом, это будет очень полезно, я прилагаю свой код:
import networkx as nx
import matplotlib
import matplotlib.pyplot as plt
g = nx.DiGraph()
g.add_node('Hostname_A')
g.add_node('Hostname_B')
g.add_node('Hostname_C')
g.add_node('Hostname_D')
g.add_edge('Hostname_A','Hostname_B')
g.add_edge('Hostname_A','Hostname_C')
g.add_edge('Hostname_B','Hostname_D')
g.add_edge('Hostname_B','Hostname_C')
for node in g.nodes():
g.node[node]['label'] = node
nx.readwrite.write_graphml(g, "graph.graphml")