MYFTP是我写的模拟FTP服务端和客户端交互的程序。经过使用socket去模拟ftp的文件下载与上次两个核心功能。并非使用真实FTP协议去实现。python
MYFTPlinux
实现一套本身的FTP服务端与客户端。git
暂无github
+---bin # 执行程序目录 | create_user.py # 建立用户程序 | myftpc.py # ftp_server启动程序 | myftps.py # ftp_client启动程序 | __init__.py | +---conf | | settings.py # 配置文件 | | __init__.py | | | \---__pycache__ | +---core | | logger.py # 日志生成文件 | | main.py # 主程序文件 | | __init__.py | | | \---__pycache__ | +---db # 数据库目录 | \---accounts # 帐号表目录 |---id_user_rs.json # 帐号ID与用户名对应关系 +---file_upload # ftp文件服务器目录 +---lib # 类文件 | | account.py # 帐号类 | | db.py # 数据库类 | | myftp_client.py # ftp客户端类 | | myftp_server.py # ftp服务端类 | | process.py # 进度条展现类(暂时未使用) | | __init__.py | | | \---__pycache__ \---log __init__.py
本系统基于python 3.6版本开发。可运行在安装了python 3.6版本的linux或windows系统中。json
进入bin目录:windows
> cd bin
执行create_user.py:服务器
> python ./create_user.py
Account:test2 # 用户名 Password:test2 # 密码 Home directory(test2): # 帐号的根目录。默认为帐号名称 Quota(bytes):10 # 帐号的quota。默认为1G ===================ACCOUNT INFO=================== Account: test2 Home Dir: test2 Quota: 10 ==================================================
进入bin目录:socket
> cd bin
执行create_user.py:加密
> python ./myftps.py
进入bin目录:
> cd bin
执行create_user.py:
> python ./myftpc.py
FTP用于登陆:
Name:test2 Password:test2 Account [test2] login successful ftp>:
ls: 查看用户当前目录的文件和目录列表
ftp>: ls 驱动器 D 中的卷是 新加卷 卷的序列号是 020D-6062 D:\deployment\MYFTP\file_upload\test2 的目录 2018/04/16 12:17 <DIR> . 2018/04/16 12:17 <DIR> .. 0 个文件 0 字节 2 个目录 45,605,543,936 可用字节 Directory [test2] list successful. ftp>:
pwd: 查看当前所在目录
ftp>: pwd Directory [\] show successful.
mdir: 建立目录
ftp>: mdir temp_dir Directory [temp_dir] create successful.
cd:切换目录
ftp>: cd temp_dir Directory [temp_dir] change successful.
put: 上传文件-支持断点续传
ftp>: get temp_file.md Start download -----> temp_file.md trandata: %s b'test123' [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100% recvsize:7, filesize:7 File [temp_file.md] download successful.
get: 下载文件-支持断点续传
ftp>: put temp_file.md [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100% File [temp_file.md] upload successful.