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.