PYSFTP脚本上传和下载

时间:2017-07-01 01:50:00

标签: python paramiko pysftp

我需要一些帮助,当我尝试连接时,我会收到以下信息。我执行的脚本如下。有关如何解决此问题的任何建议?

此外,一旦我解决了这个问题,我希望在此脚本中添加侦听功能,直到结果文件可用并从其他远程目录下载。

提前谢谢

No hostkey for host mysftpserver.com found.
Exception AttributeError: "'Connection' object has no attribute 
'_sftp_live'" in <bound method Connection.__del__ of <pysftp.Connection 
object at 0x101d8cd50>> ignored

Process finished with exit code 0

脚本

import pysftp as sftp

def sftpExample():

    try:
        s = sftp.Connection(host='mysftpserver', port=1211, username='myusername', password='mypassword')

        remotepath='/Orders/incoming/myfile.csv'
        localpath='/Users/myusername/projects/order88.csv'
        s.put(localpath,remotepath)

        s.close()

    except Exception, e:
        print str(e)

sftpExample()

2 个答案:

答案 0 :(得分:3)

pysftp documentation上的Stack Overflow和其他答案似乎也表明可以通过设置cnopts.hostkeys = None来解决错误。

所以完整的代码就像是:

import pysftp
def sftpExample():
    cnopts = pysftp.CnOpts()
    cnopts.hostkeys = None  
    with pysftp.Connection('hostname', username='me', password='secret', cnopts=cnopts) as sftp:
        sftp.put('/Users/myusername/projects/order88.csv','/Orders/incoming/myfile.csv')  # upload file to public/ on remote
        sftp.close()

sftpExample()

希望它有所帮助!

答案 1 :(得分:-2)

根据pysftp documentation,您需要在~/.ssh/known_hosts中拥有远程主机密钥。您可以通过ssh命令连接到服务器来执行此操作(它会询问您是否要向主机文件添加新密钥;如果您信任远程主机的指纹,只需键入yes

官方文档还指出了如何完全禁用主机检查,但这是不推荐,因为它会破坏SSH身份识别的关键安全功能。