使用python编写一个ftp服务器
1 #! /usr/bin/env 2 # -*- encoding:utf-8 -*= 3 ‘‘‘ 4 Created on 2020年5月14日 5 6 @author: perilong 7 ‘‘‘ 8 9 import os 10 import configparser 11 # import socket 12 from pyftpdlib.authorizers import DummyAuthorizer 13 from pyftpdlib.handlers import FTPHandler 14 from pyftpdlib.servers import FTPServer 15 16 17 __ip = ‘‘ 18 __username = ‘‘ 19 __password = ‘‘ 20 __path = ‘‘ 21 __port = -1 22 23 24 def __getConfig(): 25 global __username,__password,__path,__port 26 config = configparser.ConfigParser() 27 config.read(‘config.ini‘) 28 29 # 获取参数 30 __username = config.get(‘auth‘, ‘username‘) 31 __password = config.get(‘auth‘, ‘password‘) 32 __path = config.get(‘serverpath‘, ‘path‘) 33 __port = config.get(‘port‘, ‘port‘) 34 35 # 如果没有则创建目录 36 if not os.path.exists(__path): 37 os.makedirs(__path) 38 39 40 41 def __getLocalIp(): 42 # hostname = socket.gethostname() 43 # __ip = socket.gethostbyname(hostname) 44 global __ip 45 46 ipList = [] 47 returnMesg = os.popen(‘ipconfig -all‘).read() 48 msgList = returnMesg.split(‘\n‘) 49 for msg in msgList: 50 if ‘ipv4‘ in msg.lower(): 51 ipList.append(msg.split(‘:‘)[1].split(‘(‘)[0].strip()) 52 53 # 如果只有一个ip,则直接使用 54 if len(ipList) == 1: 55 __ip = ipList[0] 56 return 57 58 for ip in ipList: 59 if ‘192.168.1.‘ in ip: 60 __ip = ip 61 break 62 63 64 def __ftpStart(): 65 #实例化用户授权管理 66 authorizer = DummyAuthorizer() 67 authorizer.add_user(__username,__password,__path,perm=‘elradfmwMT‘) #添加用户 参数:username,password,允许的路径、权限 68 69 #实例化FTPHandle 70 handler = FTPHandler 71 handler.authorizer = authorizer 72 73 #设定一个客户端链接时的标语 74 handler.banner = ‘pyftplib based ftpd ready.‘ 75 76 server = FTPServer((__ip, __port), handler) #FTP服务器实例 77 #设定一个限制连接 78 server.max_cons = 256 79 server.max_cons_per_ip = 5 80 81 #开启服务器 82 server.serve_forever() 83 84 85 86 if __name__ == ‘__main__‘: 87 __getConfig() 88 __getLocalIp() 89 __ftpStart()
原文:https://www.cnblogs.com/perilong16/p/12891761.html