摘要:并可以實現,功能對用戶進行磁盤配額,每個用戶的可用空間不同使用模塊檢查用戶目錄的空間上文件大小,如果大于就不讓傳輸。不允許超過磁盤配額。文件的傳輸過程中顯示精度條。用戶價值實現一套自己的服務端與客戶端。
MYFTP是我寫的模擬FTP服務端和客戶端交互的程序。通過使用socket去模擬ftp的文件下載與上次兩個核心功能。并不是使用真實FTP協議去實現。
基本需求用戶加密認證 # hashlib模塊對用戶名密碼進行加密。
允許同時多用戶登錄
每個用戶有自己的家目錄,且只能訪問自己的家目錄 # 使用用戶名在配置文件的固定目錄中添加用戶名的目錄。并可以實現ls,dir功能
對用戶進行磁盤配額,每個用戶的可用空間不同 # 使用os模塊檢查用戶目錄的空間+上文件大小,如果大于quota就不讓傳輸。
允許用戶在ftp server上隨意切換目錄 cd功能 記錄用戶輸入的目錄,進行目錄的拼接。
允許用戶查看當前目錄下文件 ls功能
允許上傳和下載文件,保證文件一致性(md5)
文件傳輸過程中顯示進度條
附加功能:支持文件的斷點續傳。比較客戶端文件與服務端文件的bytes,如果不一致。客戶端、服務端就使用文件seek方法移動光標。續傳。
需求模型 用例名MYFTP
場景when:任意時間
where:任何地點
who:FTP用戶
用例描述ftp使用用戶名密碼登錄。密碼需要加密認證、允許支持多用戶登錄。
每個用戶有自己的家目錄,所有的訪問必須限制在用戶的家目錄。但在家目錄中創建的目錄可以進行目錄切換。
用戶的目錄有磁盤配額。不允許超過磁盤配額。
用戶可以查看當前目錄下的文件列表。
用戶可以上傳和下載文件,并且保證文件的一致性。
文件的傳輸過程中顯示精度條。
支持斷點續傳。
用戶價值實現一套自己的FTP服務端與客戶端。
約束暫無
建模設計 UML圖 順序圖登錄順序圖
上傳順序圖
程序講解 程序主體請從github下載后使用
MYFTP
README
+---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系統中。
用法 創建FTP用戶進入bin目錄:
> 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 ==================================================啟動ftp服務端
進入bin目錄:
> cd bin
執行create_user.py:
> python ./myftps.py啟動ftp客戶端
進入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:deploymentMYFTPfile_upload est2 的目錄 2018/04/16 12:17. 2018/04/16 12:17 .. 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.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41553.html
摘要:擴展支持多用戶并發訪問與線程池。項目請見初學網絡編程之服務器。不允許超過磁盤配額。該文件是一個使用模塊編寫的線程池類。這一步就做到了線程池的作用。 對MYFTP項目進行升級。擴展支持多用戶并發訪問與線程池。MYFTP項目請見python初學——網絡編程之FTP服務器。 擴展需求 1.在之前開發的FTP基礎上,開發支持多并發的功能2.不能使用SocketServer模塊,必須自己實現多線...
摘要:一項目說明項目簡介本次實驗通過使用實現一個弱口令掃描器開始,入門滲透測試技術,實驗涉及協議原理,庫的使用等知識點。找到密碼并不會終止程序,而是會繼續掃描其他主機的弱口令,直到所有的主機都掃描一遍。 showImg(https://segmentfault.com/img/bVz0PF); 一、項目說明 1.1 項目簡介 本次實驗通過使用 Python 實現一個 FTP 弱口令掃描器開始...
摘要:為了使用各種應用場景,該項目的整個網絡爬蟲產品線包含了四類產品,如下圖所示本實戰是上圖中的獨立爬蟲的一個實例,以采集安居客房產經紀人信息為例,記錄整個采集流程,包括和依賴庫的安裝,即便是初學者,也可以跟著文章內容成功地完成運行。 showImg(https://segmentfault.com/img/bVy2Iy); 1, 引言 Python開源網絡爬蟲項目啟動之初,我們就把網絡爬蟲...
閱讀 2907·2021-11-19 09:40
閱讀 3578·2021-10-09 09:43
閱讀 2675·2021-09-22 15:31
閱讀 1724·2021-07-30 15:31
閱讀 782·2019-08-30 15:55
閱讀 3256·2019-08-30 15:54
閱讀 1160·2019-08-30 11:26
閱讀 1907·2019-08-29 13:00