使用NAPALM循环切换列表

时间:2017-11-02 16:10:52

标签: ios python-2.7

我安装了NAPALM,并且一次只能从单个设备获取事实。但是,当我尝试打开一个具有多个开关并迭代它们以从文件中的每个开关获取事实的文件时,我收到一个错误。该错误似乎与循环文件有关,而不是具有特定的主机名参数。以下是代码:

from napalm import get_network_driver
with open('fetch.txt') as f:
for line in f:
    driver = get_network_driver('ios')
    optional_args = {'secret': 'secret!'}
    device = driver('line', 'user', 'password',optional_args=optional_args)
    print device.get_facts()

我收到以下错误,AttributeError:'NoneType'对象没有属性'send_command'。我不知道如何让NAPALM循环遍历开关的文本文件而不是一个特定的主机名。

1 个答案:

答案 0 :(得分:1)

您永远无法连接到设备。请致电device.open()或使用with关键字输入上下文:

from napalm import get_network_driver
with open('fetch.txt') as f:
for line in f:
    driver = get_network_driver('ios')
    optional_args = {'secret': 'secret!'}
    device = driver('line', 'user', 'password',optional_args=optional_args)
    device.open()
    print device.get_facts()

或:

from napalm import get_network_driver
with open('fetch.txt') as f:
for line in f:
    driver = get_network_driver('ios')
    optional_args = {'secret': 'secret!'}
    with driver('line', 'user', 'password',optional_args=optional_args) as device:
        print device.get_facts()

我怀疑可能存在其他问题,如行,用户,密码是字符串而不是变量,但这似乎超出了您的问题范围。