网络设备属性的最佳python数据结构

时间:2017-01-28 11:34:18

标签: python

我真的在寻求一些专家意见。我想发现网络上的所有设备并存储他们的管理IP和接口名称以及IP,以便我可以调用它们。

我遇到的问题是存储信息的最有效结构。 dicts的词典是最好的方式吗?

所以我的计划就是有一个像这样的词典:

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中处理它?<​​/ p>

提前致谢。

1 个答案:

答案 0 :(得分:0)

Dicts是一种非常灵活的工具,它们适用于快速原型制作。但是它们太灵活了:很容易错误地键入键值,而你缺乏一个很好的参考,你究竟是如何命名你的键。在您的结构中,您有两个位置,其中键是任意的:

  • 设备名称到设备属性映射
  • 接口名称到IP地址映射

Dicts是表达它们的自然方式。但设备属性具有固定的密钥集:mgmt_v4mvmt_v6interfaces。最好用theese字段来诽谤一个班级。

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'
    })
 }