首页 > 编程语言 >python实现ftpServer

python实现ftpServer

时间:2024-07-25 19:19:28浏览次数:20  
标签:__ ftp python ip server 实现 ftpServer import cls

使用python模拟一个fetServer

 

import os
import socket
import threading
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

_source_root = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
ftp_home = os.path.join(_source_root, "resources\\uploads\\")


def get_ip_by_prefix(prefix):
    _ip = ''
    for ip in socket.gethostbyname_ex(socket.gethostname())[2]:
        if ip.startswith(prefix):
            _ip = ip
    return _ip


class FtpServer:
    _instance = None

    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            cls._instance = super(FtpServer, cls).__new__(cls, *args, **kwargs)
            cls._instance.init_server()
        return cls._instance

    def init_server(self):
        auth = DummyAuthorizer()
        auth.add_user("123", "123", homedir=ftp_home, perm="elradfmw")
        auth.add_anonymous(homedir=ftp_home, perm="elradfmw")

        handler = FTPHandler
        handler.authorizer = auth

        # 使用本机小网ip作为ftpServer
        address = (get_ip_by_prefix("192."), 21)
        self.server = FTPServer(address, handler)

    def start(self):
        self.server.serve_forever()


def start_ftp_server():
    server = FtpServer()
    server.start()


def ftp_server_runner():
    t = threading.Thread(target=start_ftp_server)
    t.daemon = True
    t.start()
    try:
        while True:
            pass
    except KeyboardInterrupt:
        print("shutting Down")


if __name__ == "__main__":
    ftp_server_runner()

 

标签:__,ftp,python,ip,server,实现,ftpServer,import,cls
From: https://www.cnblogs.com/jinziguang/p/18323969

相关文章

  • python处理process(windows)
    python根据进程名称获取进程id、taskkill进程 importosimportpsutilfrompsutilimportNoSuchProcessclassProcessUtilCls:#停止进程(windows)。#参数:tag=1时按照process_name停止进程,否则按照pids[pid1,pid2...]停止进程@staticmethoddefpr......
  • DataOps 新趋势:联通数科如何利用 DolphinScheduler 实现数据一体化管理
    引言在DataOps(数据运营)的推动下,越来越多的企业开始关注数据研发和运营的一体化建设。DataOps通过自动化和流程优化,帮助企业实现数据的高效流转和管理。当前,ApacheDolphinScheduler作为一款开源的分布式调度系统,凭借其灵活的插件机制和强大的调度能力,已经成为许多企业构建数据......
  • 用这些宝藏AI工具打造副业!实现被动收入!
    前言大家好,我是月月!今天我们来梳理一下在目前的形势下,如何用AI工具打造一个躺赚的副业,实现被动收入?有哪些方法和途径?在本篇文章我主要提供一些已有的AI工具,后面我们再根据具体的AI工具和场景来详细聊聊!1、pyVideoTranspyVideoTrans是一个集成多种功能的视频翻译工具,能够......
  • 《Python 基础方法的奇妙回顾之旅》
    1.学习内容1.1本篇博客主要是学过的方法进行总结:1.1.1 print()方法print方法是Python中最常用到的方法,print() 方法用于将指定的对象输出到控制台。语法:print(*objects,sep='',end='\n',file=sys.stdout,flush=False)objects:要输出的一个或多个对象,可以是字符串、......
  • MFC制作MQTT(EMQX)客户端 - 开、关功能实现(附源码)
    前言全局说明MFC制作MQTT客户端(附源码)一、说明环境:Windows7旗舰版VisualStudio2013CMakeversion3.19.8paho.mqtt.cV1.3.13二、MFC功能代码:2.1引入h头文件#include"include\MQTTAsync.h"#include"include\MQTTClient.h"2.2添加连接服务器信息......
  • python之七彩进度条rich.progress
    Spinner中国有七彩云南,Python有七彩进度条rich.progress.Progress#!/usr/bin/envpythonfromcontextlibimportcontextmanagerfromtypingimportGenerator#pipinstallasynctorhttpxrichimportasynctorimporthttpxfromrich.progressimportProgress,Spinner......
  • python运行报警告:Cython directive 'language_level' not set, using '3str' for now
    相关:https://stackoverflow.com/questions/34603628/how-to-specify-python-3-source-in-cythons-setup-pycython的setup.py文件内容:fromdistutils.coreimportsetupfromCython.Buildimportcythonizesetup(name='GreatCirclemodulev1',ext_modu......
  • 通过“ 栈 ”实现“ 队列 ”
                  ......
  • ssl证书90天过期?保姆级教程——使用acme.sh实现证书的自动续期
    前言最近https到期了,想着手动更新一下https证书,结果发现证书现在的有效期只有90天,于是想找到一个自动更新证书的工具,发现了acme.sh,但是网上的文章质量参差不齐,可能需要多篇文章结合来操作,一步步试错。我这里结合了腾讯云的相关文档和一些其他的博文,保证一次性操作成功。下载acme.......
  • SSM-网络课程系统-29230(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、APP
    SSM网络课程系统摘 要本论文主要论述了如何使用SSM框架开发一个网络课程系统,将严格按照软件开发流程进行各个阶段的工作,采用B/S架构Java技术,面向对象编程思想进行项目开发。在引言中,将论述网络课程系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统......