python paramiko 关闭连接时出现问题

1 投票
1 回答
2983 浏览
提问于 2025-04-16 13:00

我最近在用 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+CCtrl+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

撰写回答