【问题标题】:EFOError when trying to connect Pyftpsync to remote server on port 22尝试将 Pyftpsync 连接到端口 22 上的远程服务器时出现 EFOError
【发布时间】:2019-05-29 04:22:40
【问题描述】:

我正在尝试通过 FTP 同步两个文件夹,是的,我知道有更好或不同的方法,但现在我需要以这种方式实现它,我正在尝试来自 pyftpsync 的示例代码,因为很好,示例代码应该可以轻松工作对?我只是想在我创建的一些测试文件夹之间进行连接,一个是空的(本地),而远程有一个我想要获取的文本文件。它尝试连接,但大约 2 分钟后我收到此错误。

好吧,我的 FTP 确实在 python 之外工作。我可以通过 winSCP 连接就好了。

有些地方提到代理可能会导致这种情况,但似乎我目前不在代理背后,但也许我没有正确设置它并且它认为应该以某种方式存在代理?

无论如何,任何可能的故障排除想法都会有所帮助。谢谢

这是我的代码,只是在 pyftpsync 提示符下使用命令对我来说会产生相同的错误。所以可能是某些输入参数关闭导致所有这些。

import time
import os
import re
import shutil
import string
import sys

from ftpsync.targets import FsTarget
from ftpsync.ftp_target import FtpTarget 
from ftpsync.synchronizers import DownloadSynchronizer

#synchronize a local folder with ftp

local = FsTarget( "C:\\testfolder\\"  ) 
user = "login"
passwd = "password"
remote = FtpTarget("/my/folder/location/testfold/", "126.0.0.1",port=22, username=user,password=passwd,tls=False,timeout=None,extra_opts=None)
opts = {}
s=DownloadSynchronizer(local, remote, opts)
s.run()

这是我得到的输出,我已经编辑了文件夹名称和 IP 地址。

INFO:keyring.backend:Loading KWallet
INFO:keyring.backend:Loading SecretService
INFO:keyring.backend:Loading Windows
INFO:keyring.backend:Loading chainer
INFO:keyring.backend:Loading macOS
INFO:pyftpsync:Download to C:\testfolder
                from ftp://126.0.0.1/.../testfold
INFO:pyftpsync:Encoding local: utf-8, remote: utf-8
Traceback (most recent call last):
  File "c:\..\.py", line 30, in <module>
    s.run()
  File "C:\\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\ftpsync\synchronizers.py", line 1268, in run
  res = super(DownloadSynchronizer, self).run()
  File "C:\\AppData\Local\Programs\Python\Python37- 
  32\lib\site-packages\ftpsync\synchronizers.py", line 827, in run
  res = super(BiDirSynchronizer, self).run()
  File "C:\\AppData\Local\Programs\Python\Python37- 
  32\lib\site-packages\ftpsync\synchronizers.py", line 211, in run
  self.remote.open()
  File "C:\\AppData\Local\Programs\Python\Python37- 
  32\lib\site-packages\ftpsync\ftp_target.py", line 141, in open
  self.ftp.connect(self.host, self.port)
  File "C:\\AppData\Local\Programs\Python\Python37- 
  32\lib\ftplib.py", line 155, in connect
  self.welcome = self.getresp()
  File "C:\\Local\Programs\Python\Python37- 
  32\lib\ftplib.py", line 236, in getresp
  resp = self.getmultiline()
  File "C:\\AppData\Local\Programs\Python\Python37- 
  32\lib\ftplib.py", line 226, in getmultiline
  nextline = self.getline()
  File "C:\\AppData\Local\Programs\Python\Python37- 
  32\lib\ftplib.py", line 210, in getline
  raise EOFError
  EOFError

【问题讨论】:

    标签: python ftp pyftpsync


    【解决方案1】:

    Pyftpsync 使用 FTP 协议。

    您正在连接到端口 22,该端口用于 SSH/SFTP。

    所以如果你的服务器实际上是 SFTP 服务器,而不是 FTP 服务器,你就不能使用 Pyftpsync。

    【讨论】:

    • 好像是这样,我在 paramiko 中尝试了一些命令,似乎工作正常,谢谢。
    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多