我有以下拓扑DOT文件(test.dot)。此点文件以交换机端口名称方式维护网络拓扑。
digraph G {
"R1":"swp1" -> "R3":"swp3"; // Port swp1 of switch R1 is connected to port swp3 of R3
"R1":"swp2" -> "R4":"swp3";
"R1":"swp3" -> "R5":"swp3";
"R1":"swp4" -> "R6":"swp3";
}
我在python中使用pygraphviz库来读取图形。
源代码:
#!/usr/bin/env python
from pygraphviz import *
G = AGraph("test.dot")
for edge in G.edges():
print edge
输出:
(u'R1', u'R6')
(u'R1', u'R4')
(u'R1', u'R3')
(u'R1', u'R5')
我面临的问题是API没有提供端口信息 如何从API获取端口信息?
答案 0 :(得分:1)
这不是一个非常光滑的界面。但是你可以这样得到数据:
In [2]: G.get_edge('R1','R3').attr['headport']
Out[2]: u'swp3'
In [3]: for e in G.edges():
print e,e.attr
...:
(u'R1', u'R3') {u'tailport': u'swp1', u'headport': u'swp3'}
(u'R1', u'R4') {u'tailport': u'swp2', u'headport': u'swp3'}
(u'R1', u'R5') {u'tailport': u'swp3', u'headport': u'swp3'}
(u'R1', u'R6') {u'tailport': u'swp4', u'headport': u'swp3'}
答案 1 :(得分:0)
以下片段完成了工作
for edge in G.edges():
print edge
print "edge-ports:",
print edge.attr.get("headport", None)