Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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
最新的SFTP python包和最佳实践_Python_Ftp_Sftp_Pysftp - Fatal编程技术网

最新的SFTP python包和最佳实践

最新的SFTP python包和最佳实践,python,ftp,sftp,pysftp,Python,Ftp,Sftp,Pysftp,我一直在寻找SFTP python包,ftpretty对我来说很好: 但我想使用更安全的协议 PYSTFP显然有点过时(编辑:PYSTFP似乎仍在频繁使用,有关错误,请参见下文): 并在Win10、PyCharm和Python3.6上抛出了几个错误: C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\pysftp\__init__.py:61: UserWarning: Failed to load HostKeys

我一直在寻找SFTP python包,ftpretty对我来说很好: 但我想使用更安全的协议

PYSTFP显然有点过时(编辑:PYSTFP似乎仍在频繁使用,有关错误,请参见下文):

并在Win10、PyCharm和Python3.6上抛出了几个错误:

C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\pysftp\__init__.py:61: UserWarning: Failed to load HostKeys from C:\Users\bobin\.ssh\known_hosts.  You will need to explicitly load HostKeys (cnopts.hostkeys.load(filename)) or disableHostKey checking (cnopts.hostkeys = None).
  warnings.warn(wmsg, UserWarning)
Traceback (most recent call last):
  File "C:/Users/bobin/PycharmProjects/classtest/pysftptest.py", line 7, in <module>
    with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword) as sftp:
  File "C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\pysftp\__init__.py", line 132, in __init__
    self._tconnect['hostkey'] = self._cnopts.get_hostkey(host)
  File "C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\pysftp\__init__.py", line 71, in get_hostkey
    raise SSHException("No hostkey for host %s found." % host)
paramiko.ssh_exception.SSHException: No hostkey for host s233.goserver.host found.
Exception ignored in: <bound method Connection.__del__ of <pysftp.Connection object at 0x00000235B0695048>>
Traceback (most recent call last):
  File "C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\pysftp\__init__.py", line 1013, in __del__
    self.close()
  File "C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\pysftp\__init__.py", line 784, in close
    if self._sftp_live:
AttributeError: 'Connection' object has no attribute '_sftp_live'

Process finished with exit code 1
由于未提供主机密钥,仍然向我抛出一个错误:

C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\pysftp\__init__.py:61: UserWarning: Failed to load HostKeys from C:\Users\bobin\.ssh\known_hosts.  You will need to explicitly load HostKeys (cnopts.hostkeys.load(filename)) or disableHostKey checking (cnopts.hostkeys = None).
  warnings.warn(wmsg, UserWarning)
EDIT2:已尝试prettyftp,但我的提供商拒绝连接:

Traceback (most recent call last):
  File "C:/Users/bobin/PycharmProjects/classtest/testftp.py", line 15, in <module>
    f.put('C:\TEMP\Capture.PNG', 'Capture230.PNG')
  File "C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\ftpretty.py", line 119, in put
    self.conn.storbinary('STOR %s' % remote_file, local_file)
  File "C:\Users\bobin\AppData\Local\Programs\Python\Python36\lib\ftplib.py", line 513, in storbinary
    return self.voidresp()
  File "C:\Users\bobin\AppData\Local\Programs\Python\Python36\lib\ftplib.py", line 249, in voidresp
    resp = self.getresp()
  File "C:\Users\bobin\AppData\Local\Programs\Python\Python36\lib\ftplib.py", line 242, in getresp
    raise error_temp(resp)
ftplib.error_temp: 425 Unable to build data connection: Operation not permitted

对于第一个错误,它似乎是
pysftp
中的一个bug

您可以查看第76行的
连接
类,第134行定义了属性
\u sftp\u live
,因此这肯定是运行时发生的错误,没有正确验证。我也能找到这一点,这可能解释了这个问题的原因;如果要显式修复,则错误中还会提到解决方案


我仍然会考虑使用<代码> ftFrave。它确实使用了

TLS
作为安全性和非常安全的包装,您只需将secure参数设置为True(
secure=True
)即可启用它-默认情况下,设置为
False

TLS连接似乎被我的提供商拒绝(请参阅我的最新编辑以获取第一篇文章)。设置secure=False再次起作用。它似乎与错误有很好的关联。你能在看对主要问题的评论的同时,了解一下解决方案吗。
C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\pysftp\__init__.py:61: UserWarning: Failed to load HostKeys from C:\Users\bobin\.ssh\known_hosts.  You will need to explicitly load HostKeys (cnopts.hostkeys.load(filename)) or disableHostKey checking (cnopts.hostkeys = None).
  warnings.warn(wmsg, UserWarning)
Traceback (most recent call last):
  File "C:/Users/bobin/PycharmProjects/classtest/testftp.py", line 15, in <module>
    f.put('C:\TEMP\Capture.PNG', 'Capture230.PNG')
  File "C:\Users\bobin\PycharmProjects\classtest\venv\lib\site-packages\ftpretty.py", line 119, in put
    self.conn.storbinary('STOR %s' % remote_file, local_file)
  File "C:\Users\bobin\AppData\Local\Programs\Python\Python36\lib\ftplib.py", line 513, in storbinary
    return self.voidresp()
  File "C:\Users\bobin\AppData\Local\Programs\Python\Python36\lib\ftplib.py", line 249, in voidresp
    resp = self.getresp()
  File "C:\Users\bobin\AppData\Local\Programs\Python\Python36\lib\ftplib.py", line 242, in getresp
    raise error_temp(resp)
ftplib.error_temp: 425 Unable to build data connection: Operation not permitted
from ftpretty import ftpretty

# Minimal
f = ftpretty('host','user','pass', port=21, secure=True)
f.put('C:\TEMP\Capture.PNG', 'Capture230.PNG')
f.close()