Скрипт Netmiko / Python не отображает вывод с нескольких устройств - PullRequest
0 голосов
/ 25 октября 2018

Когда я запускаю скрипт, он возвращает результат только с первого устройства.

#!/usr/local/bin/python3.6
import netmiko
from netmiko import ConnectHandler
import getpass
from getpass import getpass
exceptions = (netmiko.ssh_exception.NetMikoTimeoutException, netmiko.ssh_exception.NetMikoAuthenticationException)

     router = {
    'device_type': 'cisco_ios',
    'ip': '10.5.5.1',
    'username': 'admin',
    'password': getpass(),
    'secret': getpass("Enable: "),
    'global_delay_factor': 2,
}

     switch = {
    'device_type': 'cisco_ios',
    'ip': '10.5.5.2',
    'username': 'admin',
    'password': getpass(),
    'secret': getpass("Enable: "),
    'global_delay_factor': 2,
}

list_of_devices = [router, switch]
for devices in list_of_devices:
    connector = ConnectHandler(**devices)


connector.enable()
print(connector)
output = connector.find_prompt()
output += connector.send_command('show ip arp', delay_factor=2)
print(output)

connector.disconnect()

1 Ответ

0 голосов
/ 26 октября 2018

Вы должны иметь все действия Netmiko внутри цикла for.Используя текущий код, вы устанавливаете соединение на первом устройстве, затем переходите ко второму устройству и что-то делаете с ним.На самом деле вы ничего не делаете с первым устройством (поскольку единственное, что находится внутри цикла for, это вызов ConnectHandler):

Так что-то вроде этого (для секции for):

list_of_devices = [router, switch]
for devices in list_of_devices:
    connector = ConnectHandler(**devices)
    connector.enable() 
    print(connector) 
    output = connector.find_prompt() 
    output += connector.send_command('show ip arp', delay_factor=2) 
    print(output)    
    connector.disconnect()
...