1、安装python、pip、virtualenv
#centos下python是自带,无需自己安装
#安装pip
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo yum clean all
#安装virtualenv
yum install python-virtualenv
2、安装pyftpdlib
#创建并开启虚拟环境
virtualenv ftp_evn
source ftp_evn/bin/activate
#安装pyftpdlib
pip install pyftpdlib
3、写启动脚本ftpserver.py
#!/usr/bin/env python
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import ThreadedFTPServer
def main():
authorizer = DummyAuthorizer()
authorizer.add_user("admin", "h3c.com!", "/opt/share", perm="elradfmwM")
handler = FTPHandler
handler.authorizer = authorizer
server = ThreadedFTPServer(('', 21), handler)
server.serve_forever()
if __name__ == "__main__":
main()
4、运行
nohup python ftpserver.py &
浏览器访问ftp://10.90.3.118 (我的服务器ip是10.90.3.118)。输入用户名/密码后可见目录:
5、关于windows上传文件后,文件名中文乱码问题的解决方案
pyftpdlib内部使用utf-8,windows使用的是gbk,可以对pyftpdlib源码进行修改:
1、filesystems.py AbstractedFS.format_list与AbstractedFS.format_list
最后一行 yield line.encode('utf8', self.cmd_channel.unicode_errors) utf8改为gbk
2、handlers.py FTPHandler.decode return bytes.decode('utf8', self.unicode_errors) utf8改为gbk