【问题标题】:Python Paramiko, Attribute Error 'Nonetype' on close when trying to connectPython Paramiko,尝试连接时关闭属性错误“Nonetype”
【发布时间】:2018-07-10 02:16:09
【问题描述】:

我正在尝试通过 Paramiko 连接到外部 SFTP 并为凭据传递加密配置文件。尝试连接以下内容时,我收到异常 client.close 的错误,指出 AttributeError: 'Nonetype' object has not attribute 'close':

client = None
try:
    client = paramiko.Transport(hostname, port)
    client.connect(username=username, password=password)
except Exception as e:
    client.close()
    return 'Cannot connect to SFTP server: ' + str(e.args[-1]), []
# Go
sftp = paramiko.SFTPClient.from_transport(client)

【问题讨论】:

  • 主机名/端口是否已知?它肯定无法创建client
  • 看,*.com/questions/3635131/…,看来host、port需要作为元组传递:paramiko.Transport((hostname, port))

标签: python ssh paramiko


【解决方案1】:

在您调用方法 client.close() 的异常中,由于方法 client.connect 未成功而引发错误,请删除此方法或为每个可能的错误创建一个异常以处理该特定错误的代码。

【讨论】:

  • 此代码适用于另一个客户,我可以通过其他方式使用凭据登录(winscp 和 mirth),但这从一开始就失败了。是否有可以尝试的重试或其他连接方式?
  • 我将重点关注您提出的主要问题:异常代码是错误的,因为它调用了方法close,只有在connect成功时才必须调用该方法。