日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python一秒搭建FTP服務(wù)器

瀏覽:28日期:2022-06-19 15:13:48
一、了解FTP服務(wù)器 FTP(文件傳輸協(xié)議),運(yùn)行在tcp洗衣上,使用兩個(gè)端口,即數(shù)據(jù)端口和命令端口,也稱(chēng)之為控制端口。默認(rèn)情況下,20是數(shù)據(jù)端口,21是控制端口。 FTP有兩種傳輸模式:主動(dòng)模式和被動(dòng)模式

(1) 主動(dòng)模式:客戶端首先從任意的非特殊端口n(大于1023的端口,也是客戶端的命令端口)連接FTP服務(wù)器的命令端口(默認(rèn)是21),向服務(wù)器發(fā)出命令 PORT n+1,告訴服務(wù)器自己使用n+1端口作為數(shù)據(jù)端口進(jìn)行數(shù)據(jù)傳輸,然后在n+1端口監(jiān)聽(tīng)。服務(wù)器收到PORT n+1后向客戶端返回一個(gè)“ACK”,然后服務(wù)器從它自己的數(shù)據(jù)端口(20)到 客戶端先前指定的數(shù)據(jù)端口(n+1端口)的連接,最后客戶端向服務(wù)器返回一個(gè)“ACK”。

python一秒搭建FTP服務(wù)器

(2)被動(dòng)模式:為了解決服務(wù)器發(fā)起到客戶端的連接問(wèn)題,開(kāi)發(fā)了被動(dòng)FTP,或者叫做PASV,當(dāng)客戶端通知服務(wù)器處于被動(dòng)模式時(shí)才啟用。在被動(dòng)模式下,命令連接和數(shù)據(jù)連接都是有客戶端發(fā)起。當(dāng)開(kāi)啟一個(gè)FTP連接時(shí),客戶端打開(kāi)兩個(gè)非特權(quán)的任意端口(大于1023)。第一個(gè)端口連接服務(wù)器的21端口,但是與主動(dòng)方式不同,客戶端不會(huì)提交PORT命令并允許服務(wù)器來(lái)回連接數(shù)據(jù)端口,而是提交PASV命令。這樣做的結(jié)果就是服務(wù)器會(huì)開(kāi)啟任意一個(gè)非特權(quán)端口,并且發(fā)送PORT p命令給客戶端,然后客戶端發(fā)起從本地端口 n+1 到 服務(wù)器端口p 的連接來(lái)傳輸數(shù)據(jù)

python一秒搭建FTP服務(wù)器

總結(jié):主動(dòng)模式有利于對(duì)FTP服務(wù)器的管理,但是不利于對(duì)客戶端的管理。因?yàn)镕TP服務(wù)器企圖和客戶端的高位隨機(jī)端口建立連接,而這個(gè)端口很有可能會(huì)被客戶端的防火墻阻塞掉。被動(dòng)模式相反。

二、利用python搭建FTP服務(wù)器

python搭建FTP需要利用到pyftpdlib模塊

1.安裝 pyftpdlib 模塊

C:UsersLTP> pip3 install pyftpdlibC:UsersLTP> python3 -m pyftpdlib -p 21

2.找到pyftpdlib模塊源文件所在目錄

C:UsersLTP> python3……>>> import pyftpdlib>>> pyftpdlib.__path__[’/usr/local/python3/lib/python3.7/site-packages/pyftpdlib’]

3.到 pyftpdlib目錄下

發(fā)現(xiàn) filesystems.py 和 handlers.py 兩個(gè)文件,先執(zhí)行備份

C:UsersLTP> dir E:PycharmProjectsuntitledproject01venvLibsite-packagespyftpdlib2021/05/15 17:50 <DIR> .2021/05/15 17:50 <DIR> ..2017/12/30 16:44 35,246 authorizers.py2021/05/15 17:49 24,798 filesystems - 副本.py2021/05/15 17:49 24,798 filesystems.py2019/10/24 16:26 144,635 handlers - 副本.py2019/10/24 16:26 144,635 handlers.py2017/12/30 16:44 36,769 ioloop.py2019/10/24 16:26 5,823 log.py2019/10/24 16:26 3,844 prefork.py2019/10/24 16:26 21,658 servers.py2021/05/15 17:45 <DIR> test2019/10/24 16:26 774 _compat.py2019/10/24 16:28 2,845 __init__.py2018/04/26 18:41 4,879 __main__.py2021/05/15 17:46 <DIR> __pycache__ 12 個(gè)文件450,704 字節(jié) 4 個(gè)目錄 44,605,644,800 可用字節(jié)# 備份 filesystems.py 和 handlers.py# 修改filesystems.py文件# 將原本的'utf-8'修改成'gbk'(windows支持的gbk類(lèi)型的bytes)503 yield line.encode(’gbk’, self.cmd_channel.unicode_errors# 修改 handlers.py 文件# 將原本的'utf-8'修改成'gbk'(windows支持的gbk類(lèi)型的bytes)1413 return bytes.decode(’gbk’, self.unicode_errors)

4. 編寫(xiě)并運(yùn)行FTP代碼

# 該腳本程序是運(yùn)行在windows上的ftp,運(yùn)行前需要安裝pyftpdlib模塊, pip3 install pyftpdlib# 修改filesystems.py文件,將503 行的 'utf-8'修改成'gbk'(windows支持的gbk類(lèi)型的bytes)即 yield line.encode(’gbk’, self.cmd_channel.unicode_errors# 修改 handlers.py 文件,將1413行的'utf-8'修改成'gbk'(windows支持的gbk類(lèi)型的bytes)即 return bytes.decode(’gbk’, self.unicode_errors)from pyftpdlib.authorizers import DummyAuthorizerfrom pyftpdlib.handlers import FTPHandler,ThrottledDTPHandlerfrom pyftpdlib.servers import FTPServerfrom pyftpdlib.log import LogFormatterimport logging# 1.記錄日志輸出到文件和終端logger = logging.getLogger(’FTP-LOG’)logger.setLevel(logging.DEBUG)cs = logging.StreamHandler()cs.setLevel(logging.INFO)fs = logging.FileHandler(filename=’test.log’, mode=’a’, encoding=’utf-8’)fs.setLevel(logging.DEBUG)formatter = logging.Formatter(’[%(asctime)s] %(name)s - %(levelname)s : %(message)s’)cs.setFormatter(formatter)fs.setFormatter(formatter)logger.addHandler(cs)logger.addHandler(fs)# 2.實(shí)例化虛擬用戶,這是FTP的首要條件authorizer = DummyAuthorizer()# 3.添加用戶權(quán)限和路徑,括號(hào)內(nèi)的參數(shù)是(用戶名、密碼、用戶目錄、權(quán)限),可以為不同的用戶添加不同的目錄和權(quán)限authorizer.add_user(’user’, ’123456’, 'd:/', perm='elradfmw')# 4.添加匿名用戶,只需要路徑authorizer.add_anonymous('d:/')# 5.初始化ftp句柄handler = FTPHandlerhandler.authorizer = authorizer# 6.添加被動(dòng)端口范圍handler.passive_ports = range(2000,20033)# 7.上傳下載的速度設(shè)置dtp_handler = ThrottledDTPHandlerdtp_handler.read_limit = 300 * 1024 # 300 kb/sdtp_handler.write_limit = 300 * 1024 # 300 kb/shandler.dtp_handler = dtp_handler# 8.監(jiān)聽(tīng)ip和端口 , linux里需要root用戶才能使用21端口server = FTPServer((’0.0.0.0’, 21), handler)# 9.最大連接數(shù)server.max_cons = 150server.max_cons_per_ip = 15# 10.開(kāi)始服務(wù),自帶打印日志信息server.serve_forever()

authorizer.add_user(‘user’, ‘123456’, “d:/”, perm=“elradfmw”)中perm權(quán)限參數(shù)的含義:1、讀權(quán)限:

e :改變文件目錄l :列出文件r :從服務(wù)器接收文件2、寫(xiě)權(quán)限

a :文件上傳d :刪除文件f :文件重命名m :創(chuàng)建文件w :寫(xiě)權(quán)限M:文件傳輸模式(通過(guò)FTP設(shè)置文件權(quán)限)5.使用CMD登入FTP驗(yàn)證使用正常,認(rèn)證正常

python一秒搭建FTP服務(wù)器

三、編寫(xiě)FTP客戶端程序

可以用于文件的上傳下載

[root@localhost python]# vim ftp.py #!/bin/env python3# -*- coding: utf-8 -*-# Time: 2021-5-15 21:08# Description: FTP CLIENT# File Name: ftp.py# FTP客戶端from ftplib import FTP# 1.登入ftpftp = FTP(host=’192.168.0.108’, user=’user’, passwd=’123456’)# 設(shè)置編碼方式,由于在windows系統(tǒng),設(shè)置編碼方式為gbk’ftp.encoding = ’gbk’# 切換目錄ftp.cwd(’test’)# 列出文件夾內(nèi)容ftp.retrlines(’LIST’) # 或者ftp.dir()# 下載文件 node.txtftp.retrbinary(’RETR node.txt’, open(’node.txt’, ’wb’).write)# 上傳文件ftpserver.pyftp.storbinary(’STOR ftpserver.py’, open(’ftpserver.py’, ’rb’))# 查看目錄下文件詳情for file in ftp.mlsd(path=’/test’): print(file)

執(zhí)行結(jié)果:

[root@localhost python]# ./ftp.py # 列出了test文件夾中的內(nèi)容-rw-rw-rw- 1 owner group 1661 May 15 14:19 ftpserver.py-rw-rw-rw- 1 owner group 12 May 15 14:14 node.txt# 查看到了目錄下文件的詳情(’ftpserver.py’, {’modify’: ’20210515142003’, ’perm’: ’radfw’, ’size’: ’1661’, ’type’: ’file’})(’node.txt’, {’modify’: ’20210515141442’, ’perm’: ’radfw’, ’size’: ’12’, ’type’: ’file’})[root@localhost python]# ls # node.txt文件被下載到客戶端ftp.py ftpserver.py node.txt

到windows的test目錄下驗(yàn)證

ftpserver.py文件被上傳到服務(wù)端

python一秒搭建FTP服務(wù)器

以上就是python一秒搭建FTP服務(wù)器的詳細(xì)內(nèi)容,更多關(guān)于python FTP服務(wù)器的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩免费精品| 国产精品99在线观看| 麻豆精品在线| 欧美一区91| 久久亚洲影院| 国产精品普通话对白| 欧美jjzz| 久久久久久色 | 亚洲精品极品| 亚洲一区二区免费看| 免费人成在线不卡| 久久xxxx精品视频| 麻豆9191精品国产| 久久大逼视频| 美女黄网久久| 日韩精品久久久久久久软件91| 国产亚洲在线| 在线一区免费观看| 亚洲欧美日本国产| 日韩综合小视频| 性欧美长视频| 91精品成人| 国产综合激情| 国产综合欧美| 国产精品嫩草99av在线| 久久国产高清| 久久av电影| 黄色aa久久| 国产高清不卡| 黄色亚洲精品| 中文字幕一区二区三区四区久久 | 亚洲精品中文字幕乱码| 欧美精选一区二区三区| 亚洲毛片在线| 国产精品一线天粉嫩av| 精品久久不卡| 欧美福利在线| 老鸭窝亚洲一区二区三区| 国产综合婷婷| 国产日产精品一区二区三区四区的观看方式 | 国产午夜久久av| **爰片久久毛片| 日韩精品欧美激情一区二区| 91九色精品国产一区二区| 婷婷久久免费视频| 欧美日韩亚洲一区三区| 国产免费av国片精品草莓男男 | 日韩超碰人人爽人人做人人添| 日韩一二三区在线观看| 国产在线视频欧美一区| 精品丝袜在线| 日韩欧美中文在线观看| 麻豆久久一区| 亚洲第一区色| 国产毛片精品| 日本免费一区二区三区四区| 国产一区视频在线观看免费| 亚洲香蕉视频| 精品一级视频| 亚洲国产不卡| 久久中文字幕av一区二区不卡| а√天堂8资源中文在线| 色婷婷久久久| 国产亚洲精品v| 日本国产亚洲| 精品亚洲免a| 久久久影院免费| 国产精品男女| 最新亚洲一区| 超碰在线99| 石原莉奈在线亚洲二区| 在线中文字幕播放| 亚洲精一区二区三区| 国产成人精选| 欧美偷窥清纯综合图区| 免费在线小视频| 欧美日韩午夜电影网| 国产精品高颜值在线观看| 日韩精品网站| 国产精品99久久久久久董美香| 色婷婷精品视频| 免费一区二区三区在线视频| 欧美日韩三区| 麻豆91在线播放| 亚洲精品系列| 久久久精品日韩| 91亚洲国产高清| 亚洲色图国产| 新版的欧美在线视频| 美女在线视频一区| 首页国产欧美日韩丝袜| 亚洲性色视频| 麻豆精品国产91久久久久久| 老鸭窝亚洲一区二区三区| a天堂资源在线| 日日夜夜免费精品| 久久亚洲电影| 欧美不卡高清一区二区三区| 丁香婷婷久久| 日本中文字幕视频一区| 激情欧美国产欧美| 中文字幕成在线观看| 欧美日一区二区三区在线观看国产免| 欧美一级二区| 中文亚洲免费| 国产成人久久精品麻豆二区 | 国内精品99| 免费日韩成人| 中文字幕日韩亚洲| 国产99精品一区| 91精品蜜臀一区二区三区在线| 国产欧美日韩一级| 欧美永久精品| 亚洲另类黄色| 亚洲欧美专区| 久久国产成人| 中文字幕免费一区二区| 狠狠色综合网| 91精品国产福利在线观看麻豆| 日韩国产一区二区三区| 18国产精品| 国产精品一区2区3区| 少妇高潮一区二区三区99| 亚洲综合日韩| 在线精品一区| 亚洲欧美激情诱惑| 精品在线播放| 亚洲先锋成人| 日本高清不卡一区二区三区视频| 日韩久久精品| 在线看片福利| 麻豆一区在线| 精品淫伦v久久水蜜桃| 国产激情久久| 亚洲天堂av影院| 精品在线网站观看| 国产精品午夜一区二区三区| 亚洲精品进入| 伊人久久亚洲| 日韩av中文字幕一区| 午夜电影一区| 日韩激情一二三区| 麻豆精品新av中文字幕| 欧美国产中文高清| 日韩精品免费一区二区三区| 日韩欧美综合| 久久久久91| 蜜臀久久99精品久久久久宅男| 亚洲欧美不卡| 国产日韩一区二区三免费高清| 一区二区日韩免费看| 首页国产欧美久久| 日本视频在线一区| 91精品国产自产在线丝袜啪| 国产高清日韩| 日韩欧美三区| 亚洲一区成人| 美女国产精品| 美女网站视频一区| 99视频一区| 亚洲欧美激情诱惑| 国产欧美日韩精品一区二区免费 | 久久久男人天堂| 欧美成人a交片免费看| 在线午夜精品| 日本在线不卡视频一二三区| 日韩av中文字幕一区二区三区| 成人在线超碰| 91精品国产乱码久久久久久久| 视频一区在线播放| 欧美精品国产| 国产精品成人a在线观看| 在线看片不卡| 亚洲精品高潮| 日韩深夜视频| 西西人体一区二区| 欧美久久精品| 九九在线精品| 亚洲区欧美区| 日本精品不卡| 午夜在线视频一区二区区别| 久久a爱视频| 激情综合激情| 日韩国产一区二| 亚洲性色视频| 日韩亚洲精品在线观看| 日本а中文在线天堂| 999精品色在线播放| 在线精品国产亚洲| 中文字幕人成乱码在线观看| 亚洲欧美日韩专区| 中文字幕在线官网| 蜜臀91精品一区二区三区| 久久大逼视频| 久久精品福利| 亚洲精品网址| 9999国产精品| 一本一道久久a久久| 成人午夜国产| 日本久久一区|