2017-01-28 47 views
0

我真的在尋求一些專家意見。我想發現網絡上的所有設備,並存儲它們的管理IP地址和接口名稱和IP地址,以便我可以給它們打電話。網絡設備屬性的最佳python數據結構

我的問題是圍繞最有效的結構來存儲信息。是一個字典的字典是最好的方式?

所以我的計劃是有這樣一個字典:

devices = {'dev1': {'mgmt_v4': '192.168.0.1', 
        'mgmt_v6': '192::1', 
        'interfaces': {'g0/0_v4': '10.10.10.1', 
            'g0/0_v6': '10::1', 
            'g0/1_v4': '20.20.20.2', 
            'g0/1_v6': '20::2'}}} 

雖然我不知道有什麼不妥做這種方式,如何將其他人處理它在Python?

在此先感謝。

+0

你是什麼效率的定義是什麼?使用最少的內存? – BlackBear

+0

效率在易用性和易於使用的程序 – Kneelo

回答

0

指示器是一個非常靈活的工具,它們適用於快速原型設計。但是它們太靈活了:容易誤輸鍵值,而且缺少一個很好的參考文件來說明你是如何命名你的鍵的。在你的結構有兩個地方鍵將被適當地:

  • 設備名稱設備屬性映射
  • 接口名到IP地址的映射

日文N3 N4 N5是表達他們的自然方式。但是設備屬性具有固定的密鑰集:mgmt_v4mvmt_v6interfaces。用這些場地來確定一個班級會更好。

class DeviceProperties(object): 
    def __init__(self, mgmt_v4, mgmt_v6, interfaces): 
     self.mgmt_v4 = mgmt_v4 
     self.mgmt_v6 = mgmt_v6 
     self.interfaces = interfaces 

然後,你將它們存儲爲

{ 
"dev1" : DeviceProperties(
    '192.168.0.1', 
    '192::1', 
    { 
     'g0/0_v4': '10.10.10.1', 
     'g0/0_v6': '10::1', 
     'g0/1_v4': '20.20.20.2', 
     'g0/1_v6': '20::2' 
    }) 
} 
+0

謝謝阿列克謝,這似乎是它可能是一個更好的方式來處理它。我會檢查出來的。 – Kneelo