Paramiko:连接到Cisco C2960交换机时无法重用ssh会话

2024-09-30 16:38:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个简单的脚本来连接Cisco C2960交换机,只是不知道如何重用ssh会话来执行两个以上的命令。在

有一个关于SO的讨论,
Persistent ssh session to Cisco router
但没有一个答案能解决我的问题。在

我的代码是:

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')

结果:

^{pr2}$

Tags: 命令脚本paramikosostderrstdinstdoutssh
2条回答

我在引用的SO问题上回答了这个问题,但是您是否尝试使用invoke_shell()?在

我看到过很多报告,一些思科设备在关闭连接之前只允许执行一个命令(虽然这可能在设备的某个地方可以配置)。在这种情况下,您需要启动一个shell,并以交互方式(或者像pexpect那样伪交互地)工作,或者创建一个脚本以作为单个命令发送。在

invoke_shell()在与Cisco IOS交互时是最好的,我在paramiko中尝试了其他函数,但是它们都抛出了错误的EOF文件错误

相关问题 更多 >