python paramiko 关闭连接时出现问题
我最近在用 paramiko
尝试建立 SSH 连接。看起来一切都正常,但在最后一步,也就是调用 close()
方法断开连接时,出现了问题。
这是我的脚本:
#!/usr/bin/python
import paramiko
import os
ssh = paramiko.SSHClient()
private_key = os.path.expanduser('~/.ssh/id_dsa')
mkey = paramiko.DSSKey.from_private_key_file(private_key,password='JacquiKoala')
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('monitor', username='probert', pkey = mkey)
stdin, stdout, stderr = ssh.exec_command('whoami')
print stdout.readlines()
ssh.close
运行后,终端就卡住了,我可以输入东西,但没有任何反应,按 Ctrl+C 或 Ctrl+D 也无法停止脚本或连接。除了关闭终端窗口,我没有其他办法,这样做感觉不太好。
我在使用 Ubuntu 10.10,运行的是 python 2.6.6
和从源代码编译的 paramiko-1.7.4
。
我真的不知道发生了什么;close()
方法执行得很正常,执行后也有打印 "blah",没有错误信息,但连接依然存在,无法找到合适的方法来停止它。
谢谢你的帮助 :)
祝好;
Philippe
1 个回答
2
简而言之:你没有在调用这个函数。应该用 ssh.close()
来调用,而不是 ssh.close
ssh.close
只是指向这个函数的一个引用。它告诉你这个函数的存在,但并没有真正执行这个函数。下面是一个例子:
def a():
return 6
a
> <function a at 0x108f71aa0>
a()
> 6