当前位置: 首页 > news >正文

python之ftp小工具

文章目录

      • python之FTP小工具

python之FTP小工具

  • 源码
#!/usr/bin/python3
import os
import sys
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler, ThrottledDTPHandler
from pyftpdlib.servers import FTPServer
import loggingdef main(username, password, port, user_dir):# 创建一个用户授权管理器authorizer = DummyAuthorizer()# 添加一个用户,用户名为传入的username,密码为传入的password,用户目录为传入的user_dir,权限为读写authorizer.add_user(username, password, user_dir, perm="elradfmw")# 添加一个匿名用户,用户目录为用户主目录下的"nobody"文件夹,权限为只读nobody_dir = os.path.join(user_dir, "nobody")if not os.path.exists(nobody_dir):os.mkdir(nobody_dir)authorizer.add_anonymous(nobody_dir, perm="elr")# 初始化FTP处理器并设置用户授权管理器handler = FTPHandlerhandler.authorizer = authorizer# handler.masquerade_address = nat_ip# 设置上传和下载速度限制(单位:字节/秒)dtp_handler = ThrottledDTPHandlerdtp_handler.read_limit = 30720000dtp_handler.write_limit = 30720000handler.dtp_handler = dtp_handler# 创建FTP服务器并绑定到指定地址和端口server = FTPServer(("0.0.0.0", port), handler)# 配置日志记录logging.basicConfig(filename='ftp.log', level=logging.INFO)# 启动FTP服务器server.serve_forever()if __name__ == "__main__":if len(sys.argv) != 5:print("============ python local network ftp server =====================")print("Usage:  script in parameter <username> <password> <port> <ftp_dir>")print("==================================================================")sys.exit(1)username = sys.argv[1]password = sys.argv[2]port = int(sys.argv[3])user_dir = sys.argv[4]main(username, password, port, user_dir)
  • 使用方法
[devops@my-dev pyftp]$ ./pyftp
PyInstaller/loader/pyimod03_importers.py:495: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography and will be removed in a future release.
============ python local network ftp server =====================
Usage:  script in parameter <username> <password> <port> <ftp_dir>
==================================================================[devops@my-dev pyftp]$ ./pyftp   zhaosan 123456  10010  ./  
[devops@my-dev pyftp]$ tail -100f ftp.log 
INFO:pyftpdlib:concurrency model: async
INFO:pyftpdlib:masquerade (NAT) address: None
INFO:pyftpdlib:passive ports: None
INFO:pyftpdlib:>>> starting FTP server on 0.0.0.0:10010, pid=9185 <<<
INFO:pyftpdlib:concurrency model: async
INFO:pyftpdlib:masquerade (NAT) address: None
INFO:pyftpdlib:passive ports: None
INFO:pyftpdlib:>>> starting FTP server on 0.0.0.0:10010, pid=9185 <<<
INFO:pyftpdlib:127.0.0.1:45808-[] FTP session opened (connect)
INFO:pyftpdlib:127.0.0.1:45808-[zhaosan] USER 'zhaosan' logged in.
INFO:pyftpdlib:127.0.0.1:45808-[zhaosan] RETR /home/devops/Python/pyftp/pyftp.py completed=1 bytes=1937 seconds=0.001
INFO:pyftpdlib:127.0.0.1:45808-[zhaosan] CWD /home/devops/Python/pyftp/dist 250
INFO:pyftpdlib:127.0.0.1:45808-[zhaosan] STOR /home/devops/Python/pyftp/dist/pyftp.py completed=1 bytes=1937 seconds=0.001
INFO:pyftpdlib:127.0.0.1:45808-[zhaosan] FTP session closed (disconnect).
INFO:pyftpdlib:received interrupt signal
INFO:pyftpdlib:>>> shutting down FTP server, 1 socket(s), pid=9185 <<<
  • 客户端登录使用
[root@my-dev ~]# ftp 127.0.0.1 10010
Connected to 127.0.0.1 (127.0.0.1).
220 pyftpdlib 1.5.9 ready.
Name (127.0.0.1:root): zhaosan
331 Username ok, send password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering passive mode (127,0,0,1,130,21).
125 Data connection already open. Transfer starting.
drwxrwxr-x   2 devops   devops       4096 Feb 20 02:49 __pycache__
drwxrwxr-x   3 devops   devops       4096 Feb 20 02:39 build
drwxrwxr-x   2 devops   devops       4096 Feb 20 02:49 dist
-rw-rw-r--   1 devops   devops       5244 Feb 20 02:51 ftp.log
drwxrwxr-x   2 devops   devops       4096 Feb 20 02:17 nobody
-rwxr-xr-x   1 devops   devops   12483864 Feb 20 02:50 pyftp
-rwxrwxr-x   1 devops   devops       1937 Feb 20 02:49 pyftp.py
-rw-rw-r--   1 devops   devops        996 Feb 20 02:49 pyftp.spec
226 Transfer complete.
ftp> get  pyftp.py
local: pyftp.py remote: pyftp.py
227 Entering passive mode (127,0,0,1,134,239).
125 Data connection already open. Transfer starting.
226 Transfer complete.
1937 bytes received in 0.000178 secs (10882.02 Kbytes/sec)
ftp> ls
227 Entering passive mode (127,0,0,1,148,227).
125 Data connection already open. Transfer starting.
drwxrwxr-x   2 devops   devops       4096 Feb 20 02:49 __pycache__
drwxrwxr-x   3 devops   devops       4096 Feb 20 02:39 build
drwxrwxr-x   2 devops   devops       4096 Feb 20 02:49 dist
-rw-rw-r--   1 devops   devops       5362 Feb 20 02:51 ftp.log
drwxrwxr-x   2 devops   devops       4096 Feb 20 02:17 nobody
-rwxr-xr-x   1 devops   devops   12483864 Feb 20 02:50 pyftp
-rwxrwxr-x   1 devops   devops       1937 Feb 20 02:49 pyftp.py
-rw-rw-r--   1 devops   devops        996 Feb 20 02:49 pyftp.spec
226 Transfer complete.
ftp> cd dist
250 "/dist" is the current directory.
ftp> ls
227 Entering passive mode (127,0,0,1,151,168).
125 Data connection already open. Transfer starting.
-rwxr-xr-x   1 devops   devops   12483864 Feb 20 02:49 pyftp
226 Transfer complete.
ftp> put  pyftp.py
local: pyftp.py remote: pyftp.py
227 Entering passive mode (127,0,0,1,207,205).
125 Data connection already open. Transfer starting.
226 Transfer complete.
1937 bytes sent in 2.8e-05 secs (69178.57 Kbytes/sec)
ftp> 
  • 二进制文件下载

    https://gitee.com/devops_zhao/mix_tools/raw/master/pyftp

相关文章:

python之ftp小工具

文章目录 python之FTP小工具 python之FTP小工具 源码 #!/usr/bin/python3 import os import sys from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler, ThrottledDTPHandler from pyftpdlib.servers import FTPServer import logg…...

攻防世界-web-Training-WWW-Robots

题目信息 In this little training challenge, you are going to learn about the Robots_exclusion_standard. The robots.txt file is used by web crawlers to check if they are allowed to crawl and index your website or only parts of it. Sometimes these files rev…...

护眼灯减蓝光和无蓝光的区别是什么?盘点回购率前5名的护眼台灯!

随着近视问题日益严重&#xff0c;保护视力已逐渐成为公众关注的焦点。在日常生活中&#xff0c;不良的光线环境常常成为视力下降的潜在威胁&#xff0c;因此&#xff0c;护眼台灯成为了现代家庭保护视力的必备工具。其中&#xff0c;关于台灯的蓝光问题更是受到了广泛关注。有…...

Linux常见的指令

目录 01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令&#xff08;重要&#xff09;&#xff1a;06.rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a;07.man指令&#xff08;重要&#xff09;&#xff1a;08.cp指令&#xff08;重要&#x…...

C++项目开发编译踩坑记录

git工具配置了autocrlfinput下载的代码换行符默认从CRLF转换为LF&#xff0c;导致在windows桌面开发时&#xff0c;编译C代码全文报语法错误 问题现象&#xff1a;使用git clone命令从库上下载下来的代码&#xff0c;使用VS 2022编译&#xff0c;全文报语法错误&#xff0c;但…...

【Python】【Pycharm】Python Script头文件设置

1、步骤&#xff1a;File->settings->Editor->File and CodeTemplates->Python Script 2、复制粘贴以下代码&#xff0c;应用即可&#xff1a; #!/usr/bin/env python # -*- coding: utf-8 -*-# Time :${DATE} ${TIME} # Author : admin # Site :${SITE} …...

Recorder 实现语音录制并上传到后端(兼容PC和移动端)

Recorder 首页&#xff1a;https://github.com/xiangyuecn/Recorder 一、安装 npm install recorder-core二、代码部分 1. HTML页面 <template><div><el-inputv-model"ttsText"type"textarea"placeholder"请输入内容"><…...

fastJSON 字符串转对象

一、fastJSON 包 dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.33</version> </dependency> 二、转普通对象 自定义对象A A aa JSONObject.parseObject("字符串", A.…...

C++知识点总结(19):高级贪心算法

高级贪心算法 一、P1803 活动安排1. 审题2. 思路2.1 最优区间挑选方法2.2 分配时间方法2.3 排序方法 3. 参考答案 二、P1094 纪念品分组1. 审题2. 思路2.1 每组多少个方法2.2 搭配的方法 3. 参考答案 三、村民打水1. 审题2. 思路3. 参考答案 四、习题1. 服务等待1.1 审题1.2 参…...

Stable Diffusion ComfyUI安装详细教程

上一篇文章介绍了sd-webui的安装教程&#xff0c;但学习一下ComfyUI这种节点流程式的对理解AI绘画有较大帮助&#xff0c;而且后期排查错误会更加方便&#xff0c;熟练后用这种方式做AI绘画可玩性会更多。 文章目录 一、安装包说明二、安装文件介绍三、安装步骤四、汉化五、云主…...

前端基于Verdaccio搭建私有npm仓库,上传npm插件包,及下载使用自己的npm插件包

文章目录 一、原理二、常用的仓库地址三、优势四、准备环境六、使用verdaccio搭建私有npm服务1、安装2、运行3、配置config.yaml&#xff0c;使局域网下能共享访问&#xff0c;否则只能本机访问。4、重新运行 七、npm常见操作查看当前用户信息查看源地址切换源地址删除源地址创…...

Unity红点系统的架构与设计

在游戏开发中&#xff0c;红点系统是一种常见的功能&#xff0c;用于提示玩家有未读消息或待处理任务。在Unity引擎中&#xff0c;我们可以使用脚本来实现红点系统&#xff0c;下面我将介绍一种基于Unity的红点系统的架构与设计&#xff0c;并给出对应的代码实现。 红点系统的代…...

go语言内存泄漏检查工具

和其它语言一样&#xff0c;go语言也提供了一些内存泄漏分析的工具&#xff0c;用来帮助查找和分析内存泄漏问题。有以下一些常用的工具和技术&#xff1a; 1、go tool pprof&#xff1a; Go内置了一个性能分析工具&#xff08;pprof&#xff09;&#xff0c;它可以用于分析内…...

Ps:灰度模式

Ps菜单&#xff1a;图像/模式/灰度 Image/Mode/Grayscale 灰度 Grayscale模式是一种特定的色彩模式&#xff0c;用于处理没有彩色信息的图像。 在灰度模式下&#xff0c;图像不包含颜色&#xff0c;只显示黑色、白色及其间的灰色阶。 这种模式对于需要强调光影、纹理和形状而不…...

实现律所高质量发展-Alpha法律智能操作系统

律师行业本质上属于服务行业&#xff0c;而律师团队作为一个独立的服务单位&#xff0c;应当包含研发、市场、销售、服务等单位发展的基础工作环节。但现实中&#xff0c;很多律师团队其实并没有区分这些工作。鉴于此&#xff0c;上海市锦天城律师事务所医药大健康行业资本市场…...

WordPress后台自定义登录和管理页面插件Admin Customizer

WordPress默认的后台登录页面和管理员&#xff0c;很多站长都想去掉或修改一些自己不喜欢的功能&#xff0c;比如登录页和管理页的主题样式、后台左侧菜单栏的某些菜单、仪表盘的一些功能、后台页眉页脚某些小细节等等。这里boke112百科推荐这款可以让我们轻松自定义后台登录页…...

C语言——static的三大用法

被称为面试爱考爱问题的它到底有何奥义 它难度不大并且非常常用&#xff0c;话不多说&#xff0c;直接开始 一、局部静态变量 定义 在函数内部使用static修饰的变量被称为局部静态变量&#xff0c;与普通的局部变量不同&#xff0c;局部静态变量在使用后不会被销毁&#xff…...

开源 - 一款可自定义的在线免杀平台|过x60、wd等

免责声明&#xff1a;本工具仅供安全研究和教学目的使用&#xff0c;用户须自行承担因使用该工具而引起的一切法律及相关责任。作者概不对任何法律责任承担责任&#xff0c;且保留随时中止、修改或终止本工具的权利。使用者应当遵循当地法律法规&#xff0c;并理解并同意本声明…...

论文阅读-EMS: History-Driven Mutation for Coverage-based Fuzzing(2022)模糊测试

一、背景 本文研究了基于覆盖率的模糊测试中的历史驱动变异技术。之前的研究主要采用自适应变异策略或集成约束求解技术来探索触发独特路径和崩溃的测试用例&#xff0c;但它们缺乏对模糊测试历史的细粒度重用&#xff0c;即它们在不同的模糊测试试验之间很大程度上未能正确利用…...

【 Java 编程中的常用方法和技巧】

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…...

Java static 关键字从浅入深

文章目录前言一、static 的基本概念1.1 static 修饰什么1.2 static 的一句话理解二、static 变量2.1 类变量与实例变量2.2 使用场景三、static 方法3.1 静态方法的特点3.2 使用场景四、static 代码块4.1 static 代码块什么时候执行4.2 初始化顺序五、static 内部类5.1 静态内部…...

代码随想录算法训练营第六十天|Bellman_ford 队列优化算法、Bellman_ford之判断负权回路、bellman_ford之单源有限最短路

参考文章均来自代码随想录 Bellman_ford 队列优化算法 参考文章链接 对第 59天中的题目进行优化 详细见参考文章推理步骤 还是用邻接表 #include <iostream> #include <vector> #include <queue> #include <list> #include <climits> using …...

避坑指南:STM32 HAL库SPI读写W25Q64时,你可能遇到的时序问题和调试技巧

STM32 HAL库SPI驱动W25Q64实战&#xff1a;时序陷阱与波形诊断全解析 当你的SPI Flash突然开始"装聋作哑"&#xff0c;返回的不是预期数据而是清一色的0xFF或0x00时&#xff0c;这往往不是芯片的罢工抗议&#xff0c;而是时序对话中的"鸡同鸭讲"。本文将带…...

别再乱配了!RuoYi-Vue-Plus中Sa-Token的activity-timeout与timeout到底啥区别?一个例子讲透

RuoYi-Vue-Plus中Sa-Token双超时机制&#xff1a;从业务场景到源码的深度实践 在基于Spring Boot的企业级开发中&#xff0c;会话管理一直是安全架构的核心环节。当我第一次在RuoYi-Vue-Plus项目中集成Sa-Token时&#xff0c;配置文件中那对看似相似的参数——activity-timeout…...

MIUI手机管家自动任务还能这么玩?手把手教你用备用机+智能插座实现远程打卡(附详细避坑指南)

MIUI自动任务高阶玩法&#xff1a;备用机智能插座打造远程打卡系统全攻略 1. 为什么需要远程打卡解决方案&#xff1f; 早晨8:55分的地铁车厢里&#xff0c;小李盯着手机上的导航地图&#xff0c;红色拥堵路段让他的心跳加速——距离公司打卡截止时间只剩5分钟&#xff0c;而至…...

163MusicLyrics:本地音乐歌词缺失的智能解决方案

163MusicLyrics&#xff1a;本地音乐歌词缺失的智能解决方案 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否曾经为本地音乐库中那些"沉默"的歌曲感到困…...

STM32 ADC实战避坑:轮询、中断、DMA到底怎么选?我的项目血泪经验

STM32 ADC实战避坑&#xff1a;轮询、中断、DMA到底怎么选&#xff1f;我的项目血泪经验 在嵌入式开发中&#xff0c;ADC&#xff08;模数转换器&#xff09;是连接模拟世界与数字世界的关键桥梁。无论是电池电压监测、环境光传感还是工业控制中的各种模拟量采集&#xff0c;AD…...

从面积与性能权衡出发:深度解析Tessent MBIST中Bypass/Observation逻辑的配置艺术

从面积与性能权衡出发&#xff1a;深度解析Tessent MBIST中Bypass/Observation逻辑的配置艺术 在芯片设计领域&#xff0c;测试逻辑的插入往往被视为一把双刃剑。一方面&#xff0c;它确保了芯片的可测试性和可靠性&#xff1b;另一方面&#xff0c;这些额外逻辑又不可避免地带…...

cstore_fdw深度解析:列投影与跳读索引如何实现6倍查询加速

cstore_fdw深度解析&#xff1a;列投影与跳读索引如何实现6倍查询加速 【免费下载链接】cstore_fdw Columnar storage extension for Postgres built as a foreign data wrapper. Check out https://github.com/citusdata/citus for a modernized columnar storage implementat…...

网安实战|DVWA中级DOM型XSS渗透测试全解,手把手教你绕过过滤拿下漏洞!

大家好&#xff0c;我是专注网安实战分享的博主&#xff0c;今天带大家深度拆解DVWA中级安全级别DOM型XSS渗透测试全过程&#xff01;DOM型XSS作为跨站脚本漏洞里的经典类型&#xff0c;和反射型、存储型有着本质区别&#xff0c;它的漏洞触发不经过服务器端解析&#xff0c;而…...