zoukankan      html  css  js  c++  java
  • 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('
    ')
    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()
  • 相关阅读:
    输出国际象棋&&输出余弦曲线
    打鱼晒网问题
    ATM模拟程序
    getline()函数
    AC小笔记
    ural 1208 Legendary Teams Contest
    汇编贪吃蛇
    供给与需求的市场力量
    垄断竞争
    相互依存性和贸易的好处
  • 原文地址:https://www.cnblogs.com/perilong16/p/12891761.html
Copyright © 2011-2022 走看看