Paramiko: не удалось повторно использовать сессию ssh при подключении к коммутатору Cisco C2960 - PullRequest
1 голос
/ 16 ноября 2011

Я пытаюсь написать простой скрипт для подключения коммутатора Cisco C2960. Я просто не могу понять, как повторно использовать сеанс ssh для выполнения более двух команд.

Есть обсуждениеТАК,
Постоянный ssh-сеанс с маршрутизатором Cisco
, но ни один из предоставленных ответов не может решить мою проблему.

Вот мой код:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('xxx',username='xxx',password='xxx',allow_agent=False)
stdin, stdout, stderr = ssh.exec_command('show version')
stdin, stdout, stderr = ssh.exec_command('sh mac brief')

Результаты в:

Traceback (most recent call last):
  File "./test.py", line 10, in <module>  
    stdin, stdout, stderr = ssh.exec_command('sh mac brief')
  File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 363, in exec_command
    chan = self._transport.open_session()
  File "/usr/lib/python2.6/site-packages/paramiko/transport.py", line 658, in open_session
    return self.open_channel('session')
  File "/usr/lib/python2.6/site-packages/paramiko/transport.py", line 746, in open_channel
    raise e
EOFError

Ответы [ 2 ]

1 голос
/ 15 сентября 2014

invoke_shell () лучше всего взаимодействует с Cisco IOS, я пробовал другие функции в paramiko, но все они выдают ошибки файла EOF

0 голосов
/ 29 ноября 2011

Я ответил на этот вопрос по указанному SO, но вы пытались использовать invoke_shell()?

Я видел много сообщений о том, что некоторые устройства Cisco допускают выполнение только одной команды перед закрытием соединения (хотя это может быть настроено где-то на устройстве). В этом случае вам нужно запустить оболочку и работать в интерактивном режиме (или псевдоинтерактивно, как в случае с pexpect) или создать сценарий для отправки в виде одной команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...