0

我安装了 NAPALM,并努力一次从单个设备获取事实。但是我让事情变得有点不同,现在我正在尝试使用嵌套字典连接到我的设备,但我收到了一个错误。

import napalm
from napalm_ros import ros


database_devices={
    "cisco":{
    "hostname":"152.0.0.2",
    "type":"ios",
    "username":"cisco",
    "password":"cisco",
    "optional_args":{"secret" : "cisco"}
},
"mikrotik":{
    "hostname":"152.0.0.2",
    "type":"ros",
    "username":"mikrotik",
    "password":"mikrotik",
    "optional_args":{"port" :  "8728 "}
}
}


for key,values in database_devices.items():
    print("Connecting to " + key)
    driver=napalm.get_network_driver(values.get("type",{}))

    device=driver(
    hostname=values.get("hostname",{})
    username=values.get("username",{})
    password=values.get("password"),{})
    optional_args=values.get("optional_args",{})


    device.open()

我试图在 device=driver 中的设备之间添加逗号,但我也无法连接。而且我认为当我可以解决这个问题时,我会遇到另一个问题,我的 optional_args 值在 cisco 和 mikrotik 中是不同的,在 cisco 中,我的可选 arg 是我的启用密码,在 mikrotik 中是一个端口。我如何将这些值放入我的 for ? 谢谢你的帮助。

4

2 回答 2

0

你能试试这个,因为你的数据在嵌套字典中,key,values in database_devices.items(): values[1].get('hostname',{})

于 2020-05-25T22:06:10.257 回答
0

请试试这个它对我有用。让我知道 嵌套字典

for k,v in database_devices.items():
      print('hostname '+v['hostname'])
      print('type:',v['type'])
      print('username: ',v['username'])
      print('password: ',v['password'])
      print('optional_args ',v['optional_args'])
于 2020-06-01T12:42:52.787 回答