【问题标题】:use python ftplib downloading but get ConnectionRefusedError: [Errno 111] Connection refused使用 python ftplib 下载但得到 ConnectionRefusedError: [Errno 111] Connection denied
【发布时间】:2020-10-10 07:05:14
【问题描述】:

我尝试使用 ftplib 从 FTP 服务器下载,但我得到了ConnectionRefusedError: [Errno 111] Connection refused 这是我的代码:

import os
import sys
import configparser
import socket

def downloadfile(downftp, remotepath,localpath):
    bufsize=1024
    fp = open(localpath,'wb')     
    downftp.set_debuglevel(2)
    downftp.retrbinary('RETR ' + remotepath, fp.write, bufsize)
    fp.close()   
    
def ftpconnect(host,username,password):
    ftp = FTP()
    ftp.connect(host=host,port=10022)
    ftp.login(username, password)
    return ftp

def uploadfile(ftp,remotepath, localpath):
    bufsize=1024
    fp=open(localpath,'rb')       
    ftp.set_debuglevel(0)
    ftp.storbinary('STOR ' + remotepath, fp, bufsize)
    fp.close()
conftp = ftpconnect('42.*.**.201','cityof********.****erver','COU***123')
downloadfile(conftp,'/world/datapacks/sys/data/pgdc/functions/food.mcfunction','food.mcfunction')

所有错误:

  File "<pyshell#7>", line 1, in <module>
    ftp.dir()
  File "/usr/lib/python3.6/ftplib.py", line 575, in dir
    self.retrlines(cmd, func)
  File "/usr/lib/python3.6/ftplib.py", line 468, in retrlines
    with self.transfercmd(cmd) as conn, \
  File "/usr/lib/python3.6/ftplib.py", line 399, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib/python3.6/ftplib.py", line 361, in ntransfercmd
    source_address=self.source_address)
  File "/usr/lib/python3.6/socket.py", line 724, in create_connection
    raise err
  File "/usr/lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

我试过ftp.set_pasv(True),它显示同样的错误ConnectionRefusedError: [Errno 111] Connection refused

我试过ftp.set_pasv(False), 它挂在上面

...
*cmd* 'RETR /world/datapacks/sys/data/pgdc/functions/food.mcfunction'
*put* 'RETR /world/datapacks/sys/data/pgdc/functions/food.mcfunction\r\n'
*get* '150 Opening ASCII mode data connection\n'
*resp* '150 Opening ASCII mode data connection'

请帮忙。谢谢。

【问题讨论】:

    标签: python ftplib connection-refused


    【解决方案1】:

    您是否能够从命令行成功连接到 ftp 服务器,即无需 python 代码?我认为这应该是检查连接是否被 ftp 拒绝或 python 代码有问题的第一步。

     ftp = FTP(host=ftp_host, user=ftp_user,passwd=ftp_pass)
     ftp.login()
    

    您的上传工作正常吗?

    【讨论】:

    • 我可以连接服务器并使用 FileZilla 下载文件
    • ftp.dir ftp.storlines ftp.storbinary ftp.retrlines ftp.retrbinary 都显示ConnectionRefusedError: [Errno 111] Connection refused。我只能用 ftp.connect() 连接服务器,如果我在 ftp = FTP(host=ftp_host, user=ftp_user,passwd=ftp_pass) 中给出连接参数,它也会显示ConnectionRefusedError: [Errno 111] Connection refused
    • 请。在 python 终端中运行 Ftp 命令。另外,检查您的防火墙设置,端口 21 是否打开?
    • 我的防火墙已关闭,我尝试在 python 终端中运行 FTP 命令,它对我显示同样的错误。
    • 现在我找到了一种不用 ftplib 在 python 中进行 FTP 下载的方法,谢谢你的帮助。
    猜你喜欢
    • 2018-10-08
    • 2020-05-14
    • 2013-01-03
    • 1970-01-01
    • 2021-09-16
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多