我正在尝试编写一个简单的脚本来连接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}$
我在引用的SO问题上回答了这个问题,但是您是否尝试使用
invoke_shell()
?在我看到过很多报告,一些思科设备在关闭连接之前只允许执行一个命令(虽然这可能在设备的某个地方可以配置)。在这种情况下,您需要启动一个shell,并以交互方式(或者像pexpect那样伪交互地)工作,或者创建一个脚本以作为单个命令发送。在
invoke_shell()在与Cisco IOS交互时是最好的,我在paramiko中尝试了其他函数,但是它们都抛出了错误的EOF文件错误
相关问题 更多 >
编程相关推荐