python - 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()
我建立了一个睡眠,所以我可以杀死连接的过程并模拟连接丢失的时间。
解决方案
您应该使用以下异常处理:
引发:BadHostKeyException – 如果无法验证服务器的主机密钥
引发:AuthenticationException – 如果身份验证失败
引发:SSHException – 如果在连接或建立 SSH 会话时出现任何其他错误
引发:socket.error - 如果连接时发生套接字错误
Paramiko api 文档链接:http ://docs.paramiko.org/en/1.15/api/client.html#paramiko.client.SSHClient.connect
推荐阅读
- python - 如何在 Python 中创建具有固定数量的有效用户条目的字典?
- javascript - 这两个任务是否都被视为传播?
- python - 如何确定熊猫数据框列中列表的长度?
- email - 如何使用 mautic api 发送电子邮件?
- android - 协程在 Android 模拟器上工作,但不在真实设备上
- oracle - Oracle SQL Developer IO 错误:网络适配器无法建立连接 - Windows 10 Pro
- c++ - f(123) = 1!+ 2!+ 3!.我为这种类型的函数编写了一个代码来工作,看看它。我的代码没有给出想要的结果
- python-3.x - 如何将计数列分解为单独的行并为Python中的每一行分配一个字母?
- tensorflow - ImportError: DLL load failed: The specified procedure could not be found., tensorflow
- c# - C# `BinaryReader.ReadBoolean` 卡住了