vsftpd启动问题简记
centos7 能以ipv6方式启动,启动只需修改配置如下

如需同时启动到ipv4跟ipv6,需拷贝配置文件,一份配置中只监听ipv4,一份配置中只监听ipv6
centos6中无法启动到ipv6,错误如下,20,21端口也没被其它程序占用:

以ipv4的方式启动vsftpd,在获取文件信息,下载文件,只能以主动模式运行,而ipv6可以以被动模式运行
python中ftplib进行ftp的代码(下载文件,获取文件信息),设为主动模式i,在window能正常运行,但是放到Linux下就跑不起来,会报“500 Illegal PORT command”,如果使用ftp工具,目标服务器是能进行文件上传下载的,具体需要看下ftplib的说明文档
写了一个工具类,有点乱
#encoding=utf8
import os, re, ftplib
from config import MRedis, MCoding class MFTP():
def __init__(self, host, username=None, password=None, del_remote=False, pasv=False):
self.host = host
self.username = username
self.password = password
self.del_remote = del_remote
self.ftp = ftplib.FTP(host)
self.ftp.set_pasv(pasv)
self.ftp.login() if self.username==None else self.ftp.login(username, password) def download_file(self, remote_url, local_dir):#centos
try:
file_name = remote_url.split('/').pop()
local_file = (local_dir + '/' + remote_url).decode('utf8', "ignore").encode(MCoding, "ignore")
remote_url = remote_url.replace(file_name, '')
self.ftp.cwd('~/' + remote_url)
buffsize =
fp = open(local_file, 'wb')
self.ftp.retrbinary('RETR %s' % file_name, fp.write, buffsize)
fp.close()
if self.del_remote:
print '删除文件:', remote_url, ':', file_name, '当前路径:', self.ftp.pwd()
self.ftp.delete(file_name)
except BaseException as e:
print '发生异常:', e def download_dir(self, remote_url, local_dir):#centos
try:
local_url = local_dir + '/' + remote_url
local_url = local_url.decode('utf8', "ignore").encode(MCoding, "ignore")
print '远程路径', remote_url
print '本地路径', local_url
self.ftp.cwd('~/' + remote_url) if not os.path.exists(local_url):
os.mkdir(local_url) dirs = []
self.ftp.dir('', '.', dirs.append)
for i in dirs:
f_name = i.split(' ').pop()
rusult = re.match('^dr.*', i)
if rusult:
print '文件夹下载:', remote_url
self.download_dir(remote_url + '/' + f_name, local_dir)
else:
print '文件下载:', remote_url, '/', i
self.download_file(remote_url + '/' + f_name, local_dir)
if self.del_remote:
print '删除文件夹:', remote_url
self.ftp.rmd(remote_url.split('/')[-])
except BaseException as e:
print '下载文件夹出错', e def getDirInfo(self, path):#获取目录下所有文件跟文件夹
self.ftp.cwd(path)
result = {'files': [], 'dirs': []}
dirs = []
self.ftp.dir('', '.', dirs.append)
for dir in dirs:
name = dir.split(' ').pop()
if re.match('^dr.*', dir):
result['dirs'].append(name)
else:
result['files'].append(name)
return result def upload_file(self, file_name, remote_path, local_path):
bufsize =
fp = open(local_path+'/'+file_name, 'rb')
self.ftp.storbinary('STOR ' + remote_path+'/'+file_name, fp, bufsize)
self.ftp.set_debuglevel() def close(self):
self.ftp.close() def down_dir_test(local_url):#下载测试
host = '***'
username = '***'
password = '***'
mftp = MFTP(host, username, password, True)
mftp.download_dir('', local_url) def del_dir(ftp, dirName):#删除文件夹
ftp.cwd(dirName) def down_all(local_url):#同步文件到本地
from config import dbsession
slaves = dbsession.execute('select ftp_host, ftp_user, ftp_pwd, centos from slave')
for slave in slaves:
print slave.ftp_host, slave.ftp_user, slave.ftp_pwd
MRedis.hset('ftp', slave.ftp_host, 'ftping')
mftp = MFTP(slave.ftp_host, slave.ftp_user, slave.ftp_pwd, pasv='centos7' in slave.centos)
try:
print '本地路径', local_url
mftp.download_dir('file', local_url)
except BaseException as e:
print 'error', e
finally:
MRedis.hset('ftp', slave.ftp_host, 'complete')
mftp.close() def upload_file(file_name, remote_path, local_path):#上传文件测试
host = '***'
# host = '***'
username = '***'
password = '***'
mftp = MFTP(host, username, password, True)
mftp.upload_file(file_name, remote_path, local_path)
mftp.close() def upload_file_all(file_name, remote_path, local_path):#同步爬虫文件到其他从机
from config import dbsession
slaves = dbsession.execute('select ftp_host, ftp_user, ftp_pwd, centos from slave')
for slave in slaves:
if 'centos6' in slave.centos: # centos6直接跳过
continue
mftp = MFTP(slave.ftp_host, slave.ftp_user, slave.ftp_pwd, pasv=True)
try:
mftp.upload_file(file_name, remote_path, local_path)
print "同步文件成功"
except BaseException as e:
print '同步文件失败'
print e
finally:
mftp.close() def del_file(file_name):
host = '***'
username = '***'
password = '***'
mftp = MFTP(host, username, password).ftp mftp.rmd('test_data')
mftp.cwd('test_data')
files = []
mftp.dir('', '.', files.append)
for f in files:
f = f.split(' ').pop()
try:
mftp.delete(f)
print '删除%s成功' %f
except:
print '删除%s失败' %f
mftp.cwd('..')
mftp.close() def getInfoTest():
host = '***'
username = '***'
password = '***'
mftp = MFTP(host, username, password, True)
print mftp.getDirInfo('~') if __name__ == '__main__':
local_url = 'E:/test_data'
# local_url = '/root/ftp_test'
down_all(local_url)
# down_dir_test(local_url)
# upload_file('1.txt', '', r'E:\test_data')
# upload_file('1.txt', '', r'E:\test_data')
# del_file('batj_yb.py')
# print 'end'
# getInfoTest()
vsftpd启动问题简记的更多相关文章
- 为 vsftpd 启动 vsftpd:500 OOPS: bad bool value in config file for: pasv_enable
每行的值都不要有空格,否则启动时会出现错误,举个例子,假如我在listen=YES后多了个空格,那我启动时就出现.. 为 vsftpd 启动 vsftpd:500 OOPS: bad bool val ...
- vsftpd 启动 vsftpd:500 OOPS: bad bool value in config file for: guest_enable
不然启动时会涌现毛病,举个例子 guest_enable=YES 后面出现空格,就会出现 为 vsftpd 启动 vsftpd:500 OOPS: bad bool value in config ...
- 为 vsftpd 启动 vsftpd:500 OOPS: SSL: cannot load RSA&nb
博主在配置ftp服务器的时候 自己生成的CA,然后认证自己的私钥文件 一切配置都是没有问题的,然后重新启动服务器 service vsftpd restart 出现以下错误 为 vsftpd 启 ...
- vsftpd启动报错:vsftpd:500 OOPS: bad bool value in config file for: anonymous_enable
vsftpd启动报错:vsftpd:500 OOPS: bad bool value in config file for: anonymous_enable 今天在调试centos vsftp的时 ...
- 一个可以让vsftpd启动系统用户登陆ftp的例子
编辑 /etc/vsftpd.conf 如下: listen=YES anonymous_enable=NO local_enable=YES check_shell=NO write_enable= ...
- linux centos6.5 ftp网页vsftpd配置
安装命令centos下 yum install vsftpd 出现“Complete!”时意味着安装完成.Linux中,系统对于大小写严格区分,比如abc和ABC是完全不相同的字符,要特别注意.配置V ...
- CentOS配置FTP(VSFTPD)
一.vsftp安装篇 # 安装vsftpd yum -y install vsftpd # 启动 service vsftpd start # 开启启动 chkconfig vsftpd on 二.v ...
- Ubuntu下安装FTP服务及使用(VSFTPD详细设置)(二)
vsftpd 作为一个主打安全的FTP服务器,有很多的选项设置.下面介绍了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf这个配置文件 的.本文将提供完整的vsftpd.conf ...
- Linux vsftpd 无法登录 cannot change directory:xxx priv_sock_get_cmd 问题
配置vsftpd时本地用户无法切换不能登录问题.问题如下: C:\Users\kai>ftp ftp> open 172.24.144.10 连接到 172.24.144.10. (vsF ...
随机推荐
- GitHub的初级使用
最近准备学习一个GitHub的使用 一.账号创建 1.百度找到GitHub官方网站(https://github.com/ ) 2.点击Sign up注册GitHub账号 下图为注册页面 第一步:填写 ...
- (转载)Python之道1-环境搭建与pycharm的配置django安装及MySQL数据库配置
近期做那个python的开发,今天就来简单的写一下开发路线的安装及配置, 开发路线 Python3.6.1+Pycharm5.0.6+Django1.11+MySQL5.7.18 1-安装Python ...
- C++面向对象程序设计之C++的初步知识
本节内容为学习谭浩强老师编写的<C++面向对象程序设计>的第1章 C++的初步知识 后的个人总结. 在正文开始之前,首先声明,我是Python程序员. 1.2.最简单的C++程序 例1 ...
- Docker: Harbor一些小知识
镜像文件上传到私有仓库harbor后,镜像的物理存储位置在哪里? 这些信息记录在docker-compose.yml里,通过观察发现 镜像存储在了宿主机的 volumes: - /data/regis ...
- .NET ORM框架之NHibernate
这段时间一直使用NHibernate,今天抽空总结一下. 1.什么是NHibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/r ...
- 一次CMS GC问题排查过程(理解原理+读懂GC日志)
这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 ...
- Cordova入门系列(三)Cordova插件调用
版权声明:本文为博主原创文章,转载请注明出处 上一章我们介绍了cordova android项目是如何运行的,这一章我们介绍cordova的核心内容,插件的调用.演示一个例子,通过cordova插件, ...
- Elasticsearch 通关教程(二): 索引映射Mapping问题
数据库建表的时候,我们的DDL语句一般都会指定每个字段的存储类型,例如:varchar,int,datetime等等,目的很明确,就是更精确的存储数据,防止数据类型格式混乱. CREATE TABLE ...
- flask(二)之Jinja2模板与Flask-WTF
01-文档 官方文档:http://docs.jinkan.org/docs/jinja2/ 02-基本语义 Jinja2做构成的模板文件中,文本内容大致可以分成几个种类.比如特殊文本(不进行转义,比 ...
- 父进程结束,其子进程不会结束,会挂到init进程下
结论:一个父进程产生子进程,父进程结束(kill),子进程不会结束,子进程被init进程托管 下面是过程: d.sh脚本是一个ping命令,执行d.sh 目前,103310 进程为父进程,103344 ...