首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历嵌套字典,以连接到Napalm中的多个供应商设备

循环遍历嵌套字典,以连接到Napalm中的多个供应商设备
EN

Stack Overflow用户
提问于 2020-05-26 05:49:58
回答 2查看 98关注 0票数 0

我已经安装了NAPALM,并且一次只从一个设备上获取事实。然而,我的设备让事情有点不同,现在我试图使用一个嵌套的字典来连接我的设备,但我得到了一个错误。

代码语言:javascript
复制
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设备之间加逗号,但是我也连接不上。我想当我可以解决这个问题时,我会遇到另一个问题,在思科和mikrotik中,我的optional_args值是不同的,在思科中,我的可选参数是我的使能密码,在mikrotik中,我可以将此值放入我的port.How中。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2020-05-26 06:06:10

您是否可以尝试一下,因为您的数据在database_devices.items()中的键、值的嵌套字典中: values1.get('hostname',{})

票数 0
EN

Stack Overflow用户

发布于 2020-06-01 20:42:53

请试试这个,它对我很有效。让我知道nested dictionary

代码语言:javascript
复制
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'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62011309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档