【问题标题】:Detect connection close event in Python Paramiko在 Python Paramiko 中检测连接关闭事件
【发布时间】:2021-05-17 13:57:45
【问题描述】:

如何检测连接何时因任何原因关闭?有任何事件/回调吗? 以下是我连接到 SFTP 的部分工作代码:

def connect(self, Host, Username, Password, Keyfilepath, Keyfiletype, Port=22):
   self.transport = paramiko.Transport((Host, Port))
   self.transport.connect(None, Username, Password, self.key)

如果我在连接状态下手动关闭 WiFi,我会收到一条日志

套接字异常:一个现有的连接被远程主机强行关闭(10054)

但是,这是来自 Paramiko 库本身的错误。有没有办法通过我的代码来控制它?谢谢

一些背景知识:当用户登录时,我会将他们连接到 SFTP 并将标签更新为 “服务器已连接”。但是,当连接由于任何原因断开时,我无法将标签更新为 “断开连接”

【问题讨论】:

    标签: python ssh sftp paramiko


    【解决方案1】:

    定期致电Transport.is_active() 以检查连接是否仍然有效。


    Ntb,通过使用低级 Transport 类,您可能绕过主机密钥检查,这是一个安全漏洞。您最好使用高级别的SSHClient API。

    【讨论】: