Python SSH Paramiko EOFError
У меня есть простой скрипт для подключения через SSH на маршрутизаторе Nokia и выполнения команды "показать время":
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('adres ip', port=22, username='username', password='password')
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('show time')
output = stdout.readlines()
print '\n'.join(output)
ssh.close()
Вход в узел успешно. Я вижу себя на маршрутизаторе, но выполнение команды не сработает. Я получаю ошибку, как это:
Traceback (most recent call last): File "C:\Users\pkudalsk\Desktop\pyt.py", line 6, in <module>
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('show time') File "C:\Users\pkudalsk\Desktop\paramiko\client.py", line 479, in exec_command
chan.exec_command(command) File "C:\Users\pkudalsk\Desktop\paramiko\channel.py", line 63, in _check
return func(self, *args, **kwds) File "C:\Users\pkudalsk\Desktop\paramiko\channel.py", line 241, in exec_comman d
self._wait_for_event() File "C:\Users\pkudalsk\Desktop\paramiko\channel.py", line 1198, in
_wait_for_ event
raise e EOFError
Кто-нибудь знает, что может вызвать эту проблему? Я пробовал на python 3.6 и 2.7. Результат тот же.
Спасибо
1 ответ
Есть 2 решения:
1.- Поместите эту командуprint('\n'.join(output))
2.- Если ваша проблема не устранена, не используйте paramiko, используйте netmiko. У меня была такая же проблема с роутерами nokia, и я перешел на netmiko. Вот один пример
from netmiko import ConnectHandler
device = {
'device_type': 'nokia_sros',
#'device_type': 'alcatel_sros',
'ip': 'ip_add',
'username': 'user',
'password': 'password',
'port': 22,
'verbose': True
}
with ConnectHandler(**device) as net_connect:
output = net_connect.send_command('show chassis detail')
print(output)```