在 Python Paramiko 中检测连接关闭事件

Detect connection close event in Python Paramiko

如何检测连接何时因任何原因关闭?这个有什么event/callback吗? 以下是我连接到 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,我会收到一条日志

Socket exception: An existing connection was forcibly closed by the remote host (10054)

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

一些背景:当用户登录时,我会将他们连接到 SFTP 并将标签更新为 “Server Connected”。但是,当连接由于任何原因断开时,我无法将标签更新为 "Disconnected".

定期调用 Transport.is_active() 检查连接是否仍然有效。


Ntb,通过使用低级 Transport class,您可能会绕过主机密钥检查,这是一个安全漏洞。你最好用高级的SSHClientAPI.