首页 > 解决方案 > Python SFTP:连接中断时获取通知

问题描述

如果与服务器的连接由于某种原因而中断,是否有可能收到文本或其他内容,所以我知道错误与服务器有关?

import paramiko
import time

def connSFTP(ssh_key_filepath,host,user):
    #Fehleroptionen 1. Pfad zum SSH-KeyError
                        #-SSH-Key vorhanden?
                    #2.Host und/oder Username ist falsch

    k = paramiko.RSAKey.from_private_key_file(ssh_key_filepath) #SSH KEY
    c = paramiko.SSHClient()
    c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    c.connect( hostname = host, username = user , pkey = k )
    sftp = c.open_sftp()

    return sftp

def main():
    ssh_key_filepath = '/home/dtv/.ssh/id_rsa'
    hostname = 'HostAdress'
    username = 'user'
    sftp = connSFTP(ssh_key_filepath,hostname,username)
    print('Connected')

    time.sleep(30)

    #sftp.close()

if __name__ == '__main__':
    main()

我建立了一个睡眠,所以我可以杀死连接的过程并模拟连接丢失的时间。

标签: pythonnotificationsconnectionsftpparamiko

解决方案


您应该使用以下异常处理:

引发:BadHostKeyException – 如果无法验证服务器的主机密钥

引发:AuthenticationException – 如果身份验证失败

引发:SSHException – 如果在连接或建立 SSH 会话时出现任何其他错误

引发:socket.error - 如果连接时发生套接字错误

Paramiko api 文档链接:http ://docs.paramiko.org/en/1.15/api/client.html#paramiko.client.SSHClient.connect


推荐阅读