paramiko关闭SSH上的一个非连接

我正在调试一些代码,这将导致我不断登录/退出某些外部sftp服务器。 有谁知道如果paramiko自动关闭外部服务器上的ssh / sftp会话,如果在代码中引发了非paramiko异常? 我无法在文档中找到它,并且由于每次迭代都必须尽早完成连接,因此我不想以20个打开的连接结束连接。


不,paramiko不会自动关闭ssh / sftp会话。 如果例外由paramiko编码或其他方式产生,这并不重要; paramiko代码中没有捕获任何异常并自动关闭它们,所以你必须自己做。

你可以通过将它封装在try / finally块中来确保它被关闭,如下所示:

client = None
try:
    client = SSHClient()
    client.load_system_host_keys()
    client.connect('ssh.example.com')
    stdin, stdout, stderr = client.exec_command('ls -l')
finally:
    if client:
        client.close()

SSHClient()可以用作上下文管理器,所以你可以做

with SSHClient() as ssh:
   ssh.connect(...)
   ssh.exec_command(...)

而不是手动关闭。

链接地址: http://www.djcxy.com/p/33635.html

上一篇: Does paramiko close ssh connection on a non

下一篇: Unable to locate the source of a Clojure function