我正在调试一些代码,这将导致我不断登录/退出一些外部sftp服务器。有谁知道,如果代码中出现非paramiko的异常,paramiko是否会自动关闭外部服务器上的ssh/sftp会话?我在文档中找不到,而且由于连接必须在每次迭代的早期进行,我不希望最后有20个开放的连接。
2
个回答
Todor Buyukliev
发布于
2011-11-28
已采纳
0
人赞同
SSHClient()可以作为一个上下文管理器使用,所以你可以做到
with SSHClient() as ssh:
ssh.connect(...)
ssh.exec_command(...)
而不是手动关闭。
aculich
发布于
2011-11-28
0
人赞同
不,paramiko不会自动关闭ssh / sftp会话。异常是否由paramiko代码产生并不重要;paramiko代码中没有任何东西可以捕获任何异常并自动关闭它们,所以你必须自己做。
你可以通过把它包裹在一个try/finally块中来确保它被关闭,就像这样。
client = None
client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')