Python SSH Paramiko EOFError

Paw*_*ski 5 python ssh paramiko eoferror

我只有像这样的简单脚本,可以通过诺基亚路由器上的 SSH 连接并执行命令“show time”:

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()
Run Code Online (Sandbox Code Playgroud)

登录节点成功。我看到自己在路由器上,但​​执行命令不起作用。我收到这样的错误:

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
Run Code Online (Sandbox Code Playgroud)

有谁知道什么会导致这个问题?我尝试了 python 3.6 和 2.7。结果一样。

谢谢

小智 0

有2个解决方案:

1.- 输入此命令print('\n'.join(output)) 2.- 如果问题仍然存在,请不要使用 paramiko,而使用 netmiko。我的诺基亚路由器也有同样的问题,我换成了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)```
   
Run Code Online (Sandbox Code Playgroud)