Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 要上载和下载的PYSFTP脚本_Python_Paramiko_Pysftp - Fatal编程技术网

Python 要上载和下载的PYSFTP脚本

Python 要上载和下载的PYSFTP脚本,python,paramiko,pysftp,Python,Paramiko,Pysftp,我需要一些帮助,当我尝试连接时,我会收到下面的消息。下面是我正在执行的脚本。关于如何解决这个问题,有什么建议吗 此外,一旦我解决了这个问题,我希望能在这个脚本中添加监听功能,直到结果文件可用,并从不同的远程目录下载它 提前谢谢你 No hostkey for host mysftpserver.com found. Exception AttributeError: "'Connection' object has no attribute '_sftp_live'" in <bound

我需要一些帮助,当我尝试连接时,我会收到下面的消息。下面是我正在执行的脚本。关于如何解决这个问题,有什么建议吗

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

提前谢谢你

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
根据,您需要在
~/.ssh/known_hosts
中具有远程主机密钥。您可以通过
ssh
命令连接到服务器(它会询问您是否要向主机文件添加新密钥;如果您信任远程主机的指纹,只需键入
yes

官方文档还指出了如何完全禁用主机检查,但不建议这样做,因为这会破坏SSH标识的关键安全功能

上的和其他答案似乎也表明可以通过设置
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()

希望有帮助

我确实试过了,但还是会出错。我尝试以sftp cnopts=pysftp.cnopts()cnopts.hostkeys=None s=sftp.Connection(主机=,端口=,用户名=,密码=“”,cnopts=cnopts)的形式导入pysftp下面是错误cnopts=pysftp.cnopts()name错误:名称“pysftp”未定义当您说将pysftp导入为sftp时,您正在以不同的名称导入模块。因此,您会说
cnopts=sftp.cnopts()
,因为您在导入时更改了名称!如果有帮助的话,我还编辑了上面的答案。。。我看到的所有其他答案都使用了
与pysftp.Connection(…)
而不是
s=pysftp.Connection(…)
,因此这可能也是一个因素!请不要使用这个答案。这将删除SSH的标识安全性。检查官方文档并使用
ssh
命令或手动将服务器的主机密钥放入
~./ssh/known_hosts
文件中。正如官方文档中所说的那样[只需保持简单并尝试此操作(根据您的使用情况进行调整):``使用pysftp.Connection导入pysftp('hostname',username='me',password='secret')作为sftp:with sftp.cd('public'):#临时chdir到public sftp.put('/my/local/filename')#将文件上载到public/on remote sftp.get('remote_file')#获取远程文件``它对我有用!
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()