Python: SSH в устройство Cisco и запуск команд show

Я прочитал этот пост и изучил Exscript, paramiko, Fabric и pxssh, и я все еще потерял постоянную сессию ssh для маршрутизатора Cisco . Я новичок в скриптах python.

Я пытаюсь написать сценарий на Python, который будет SSH в устройство Cisco, запустить «show version», отобразить результаты в блокноте, а затем завершить скрипт.

Я могу заставить это работать с командами show, которые не требуют от пользователя взаимодействия с устройством. Например:

from Exscript.util.interact import read_login from Exscript.protocols import SSH2 account = read_login() conn = SSH2() conn.connect('192.168.1.11') conn.login(account) conn.execute('show ip route') print conn.response conn.send('exit\r') conn.close() 

В приведенном выше скрипте будут отображаться результаты «show ip route».

Если я попробую conn.execute ('show version'), сценарий истечет, потому что устройство Cisco ожидает, что пользователь нажмет пробел, чтобы продолжить, нажмите «вернуться», чтобы отобразить следующую строку или любую клавишу, чтобы вернуться в командную строку.

Как я могу выполнить команду show version, дважды нажать пробел, чтобы отобразить весь вывод команды show version, а затем напечатать ее в python?

Спасибо!!!!

    Попробуйте выполнить terminal length 0 перед запуском show version . Например:

     from Exscript.util.interact import read_login from Exscript.protocols import SSH2 account = read_login() conn = SSH2() conn.connect('192.168.1.11') conn.login(account) conn.execute('terminal length 0') conn.execute('show version') print conn.response conn.send('exit\r') conn.close() 

    Из клиентских терминалов Cisco: http://www.cisco.com/en/US/docs/ios/12_1/configfun/command/reference/frd1003.html#wp1019281

    Сначала выполнить

     terminal length 0 

    для отключения пейджинга.

    Я просто спросил то же самое, и приведенный ниже код будет запущен из списка и получить информацию, которую вы запрашиваете.

     from __future__ import print_function from netmiko import ConnectHandler import sys import time import select import paramiko import re fd = open(r'C:\NewdayTest.txt','w') # Where you want the file to save to. old_stdout = sys.stdout sys.stdout = fd platform = 'cisco_ios' username = 'username' # edit to reflect password = 'password' # edit to reflect ip_add_file = open(r'C:\IPAddressList.txt','r') # a simple list of IP addresses you want to connect to each one on a new line for host in ip_add_file: host = host.strip() device = ConnectHandler(device_type=platform, ip=host, username=username, password=password) output = device.send_command('terminal length 0') output = device.send_command('enable') #Editable to be what ever is needed print('##############################################################\n') print('...................CISCO COMMAND SHOW RUN OUTPUT......................\n') output = device.send_command('sh run') print(output) print('##############################################################\n') print('...................CISCO COMMAND SHOW IP INT BR OUTPUT......................\n') output = device.send_command('sh ip int br') print(output) print('##############################################################\n') fd.close()