python 搭建ftp服务器

使用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()

 

posted @ 2020-05-14 22:20  PerilongGideon  阅读(349)  评论(0编辑  收藏  举报