Skip to content

(失敗) N2G でネットワーク図を作成する

N2G というネットワーク図を作成出来る Python のライブラリがあります。

GitHub から Clone した tests ディレクトリにあるサンプルを使い、.graphml や .drawio ファイルを生成することは出来ました。 ただ、生成されたファイルがなぜか (0 byte では無いのですが) ノードやリンクの情報が無い、ネットワーク図としては意味の無いデータしか作成されませんでした…

検証環境

以下 2 パターンの環境でテストしましたが、いずれも同じ結果になってしまいました。

対象 バージョン
macOS 14.2.1
Python 3.12.2
対象 バージョン
Ubuntu 22.04.3LTS
Python 3.12.2

検証手順

pip で必要なライブラリをインストールします。

1
python3 -m pip install N2G[full]

GitHub にサンプルファイルを data ディレクトリに保存した上で下記を実行します。

1
2
n2g -d ./data/ -m yed -L2 -L2-group-links -fn diagram.graphml -of ./Output/
n2g -d ./data/ -m drawio -L2 -L2-group-links -fn diagram.drawio -of ./Output/

しかし、いずれにしてもノードやリンク情報が 含まれていない ファイルが作成されてしまいます…

N2G を Python から利用する

N2G を (CLI ツールとして使わず) Python スクリプト内から呼び出した場合、yED 形式は上手くデータを作成出来ているようです。 作成されたデータはオンラインの yED Live で開くことが出来ました。

ですが、draw.io 形式ではデータは作成されているように見えるものの、オンラインエディタ でファイルを開くと「最初に定義したノード」しか表示されず、しかもその状態で上書きされてしまう (2 番目以降のノード情報がデータ内から削除されてしまう) ように見えました。

Issue を Open しても良かったのですが、N2G は活発にも見えなかったので、今回はこのままにしておこうと思います。

参考

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
n2g-sample$ n2g --help
usage: n2g [-h]

N2G CLI, version 0.3.3

options:
  -h, --help  show this help message and exit

  Version: 0.3.3
  Parsing order is: CDP/LLDP (L2)  => IP => OSPF => ISIS

  -d,   --data         OS path to data folder with files or file
  -of,  --out-folder   Folder where to save result, default ./Output/
  -fn,  --filename     Results filename, by default filename based on current time
  -m,   --module       Module to use - yed, drawio or v3d
  -ipl, --ip_lookup    Path to CSV file for IP lookups, first column header must be ``ip``
  --no-data            Do not add any data to links or nodes
  --layout             Name of iGraph layout algorithm to run for the diagram e.g. "kk", "tree" etc.
  --log-level          Logging level, default is ``ERROR``
  --port               Port number to run viewer server (V3D, yED) on, default is 9000
  --ip                 IP address to run viewer server (V3D, yED) on, default is ``0.0.0.0``

  V3D Module arguments:
  --run                Run built in test web server to display topology instead of saving to file

  XLSX data adapter. -d should point to ".xlsx" spreadsheet file.
  -nt,     --node-tabs           Comma separate list of tabs with nodes data
  -lt,     --link-tabs           Comma separate list of tabs with links data
  -nm,     --node-headers-map    JSON dictionary structure for node headers translation
  -lm,     --link-headers-map    JSON dictionary structure for link headers translation

  CDP and LLDP L2 Data Plugin options:
  -L2                 Parse CDP and LLDP data
  -L2-add-lag         Add LAG/M-LAG information and delete member links
  -L2-group-links     Group links between nodes
  -L2-add-connected   Add all connected nodes
  -L2-combine-peers   Combine CDP/LLDP peers behind same interface
  -L2-platforms       Comma separated list of platforms to parse

  IP Data Plugin:
  -IP                 Parse IP subnets
  -IP-group-links     Group links between nodes
  -IP-lbl-intf        Add interfaces names to link labels
  -IP-lbl-vrf         Add VRF names to link labels
  -IP-add-arp         Add ARP cache IPs to the diagram

  OSPF LSDB Data Plugin:
  -OSPF               Diagram OSPFv2 LSDB data
  -OSPF-add-con       Add connected subnets to diagram

  ISIS LSDB Data Plugin:
  -ISIS               Diagram ISIS LSDB data
  -ISIS-add-con       Add connected subnets to diagram

  yED SVG Viewer:
  --yed-svg-viewer    Run yED SVG Viewer
  --diagrams-dir      OS Path to directory with diagrams svg files

  V3D Diagram Viewer:
  --v3d-viewer        Run V3D JSON files viewer
  --diagram-file      OS Path to JSON file with diagram data