ftp 登陆后读取目录列表失败

在centos7上面部署完vsfpt后, 使用虚拟用户在windows上面登陆ftp时, 显示登陆成功,但是读取目录列表失败,响应码为:425 Failed to establish connection.

原因:centos上已经开启了20,21,22三个端口, 用telnet命令测试以及客户端显示已登录都表明三个端口已开放,没有问题.检查vsftp.conf文件(vim /etc/vsftpd/vsftd.conf):

发现启用pasv链接模式时,启用了10060-10090的端口进行数据传输,尝试在firewalld里添加该端口段:

firewall-cmd --zone=public --add-port=10060-10090/tcp --permanent

重新载入:

firewall-cmd --reload

再次使用ftp客户端登陆,显示成功:

 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用 Python 的 ftplib 库来实现判断是否存在目录,并在不存在目录时创建一个或者多个层级目录的功能。具体步骤如下: 1. 连接 FTP 服务器: ```python from ftplib import FTP ftp = FTP(host, user, password) ``` 2. 判断目录是否存在,可以使用 `nlst` 方法获取当前目录下的所有文件和目录列表,并判断需要的目录是否存在: ```python def is_ftp_dir_exists(ftp, remote_path): file_list = [] try: ftp.retrlines('LIST ' + remote_path, file_list.append) except Exception as e: print(e) return False for file in file_list: if file.split()[-1] == remote_path.split('/')[-1]: return True return False ``` 3. 如果目录不存在,则使用 `mkd` 方法逐层创建目录: ```python def ftp_mkdir_recursive(ftp, remote_path): if is_ftp_dir_exists(ftp, remote_path): return True else: parent_dir = remote_path[:remote_path.rfind('/')] if ftp_mkdir_recursive(ftp, parent_dir): try: ftp.mkd(remote_path) return True except Exception as e: print(e) return False else: return False ``` 完整代码示例: ```python from ftplib import FTP host = 'ftp.example.com' user = 'username' password = 'password' remote_path = '/remote/path/to/directory' ftp = FTP(host, user, password) def is_ftp_dir_exists(ftp, remote_path): file_list = [] try: ftp.retrlines('LIST ' + remote_path, file_list.append) except Exception as e: print(e) return False for file in file_list: if file.split()[-1] == remote_path.split('/')[-1]: return True return False def ftp_mkdir_recursive(ftp, remote_path): if is_ftp_dir_exists(ftp, remote_path): return True else: parent_dir = remote_path[:remote_path.rfind('/')] if ftp_mkdir_recursive(ftp, parent_dir): try: ftp.mkd(remote_path) return True except Exception as e: print(e) return False else: return False if ftp_mkdir_recursive(ftp, remote_path): print('目录创建成功!') else: print('目录创建失败!') ftp.quit() ``` 注意:FTP 服务器需要有创建目录的权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值