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 ...
随机推荐
- C# -- 结构、访问修饰符
C# -- 结构.访问修饰符 1. 结构: struct 类型 对于结构,不像类那样存在继承. 一个结构不能从另一个结构或类继承,而且不能作为一个类的基. 但是,结构从基类 Object 继承. 结构 ...
- 【Python 18】BMR计算器2.0(数值类型转换与while循环)
1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...
- .net 调用java service 代理类方法
通过Svcutil.exe 工具生成代理类调用 1.找到如下地址“C:\Windows\System32\cmd.exe” 命令行工具,右键以管理员身份运行(视系统是否为win7 而定) 2 ...
- day4-python基础-数据类型
今日份小技巧 a =3 b=4, 最快将a和b值替换的方法为 a,b =b,a 今日内容 1. 字典 2. 集合 3.hash 4.基本数据类型总结 5.循环之for循环 6.range的使用 7.深 ...
- Linux内核入门到放弃-页缓存和块缓存-《深入Linux内核架构》笔记
内核为块设备提供了两种通用的缓存方案. 页缓存(page cache) 块缓存(buffer cache) 页缓存的结构 在页缓存中搜索一页所花费的时间必须最小化,以确保缓存失效的代价尽可能低廉,因为 ...
- vue中使用LESS、SASS、stylus
less的使用 npm install less less-loader --save 修改webpack.config.js文件.vue.cli 搭建项目可跳过此步 { test: /\.less$ ...
- k8s简单的来部署一下tomcat,并测试自愈功能
前言: 2018年12月6日 今天终于把k8s运行tomcat打通了,耗了我几天时间一个一个坑踩过来,不容易啊,废话不多说. 先记录一些操作时的错误: <<<<<< ...
- 使用Node.js搭建数据爬虫crawler
0. 通用爬虫框架包括: (1) 将爬取url加入队列,并获取指定url的前端资源(crawler爬虫框架主要使用Crawler类进行抓取网页) (2)解析前端资源,获取指定所需字段的值,即获取有价值 ...
- 如何去掉wordpress网站url里面的index.php(Apache服务器)
在wordpress根目录新建.htaccess文件,并拷贝以下代码保存即可. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase ...
- flask 实现登录 登出 检查登录状态 的两种方法的总结
这里我是根据两个项目的实际情况做的总结,方法一(来自项目一)的登录用的是用户名(字符串)和密码,前后端不分离,用form表单传递数据:方法二用的是手机号和密码登录,前后端分离,以json格式传递数据, ...