用 Python 快速实现 HTTP 和 FTP 服务器
用 Python 快速实现 HTTP 服务器
有时你需临时搭建一个简单的 Web Server
,但你又不想去安装 Apache
、Nginx
等这类功能较复杂的 HTTP
服务程序时。这时可以使用 Python
内建的 SimpleHTTPServer
模块快速搭建一个简单的 HTTP
服务器。
SimpleHTTPServer
模块可以把你指定目录中的文件和文件夹以一个简单的 Web
页面的方式展示出来。
假设我们需要以 Web
方式共享目录 /Users/Mike/Docker
,只需要以下这个命令行就可以轻松实现:
$ cd /Users/Mike/Docker
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
SimpleHTTPServer
模块默认会在 8000 端口上监听一个 HTTP
服务,这时就可以打开浏览器输入 http://IP:Port
访问这个 Web
页面。例如类似下面的 URL:
http://192.168.100.49:8000
如果你需要 Web
服务有一个默认页,可以在目录下创建一个名为 index.html 的文件。如果没有默认页,那么会以列表的形式将目录中的内容显示出来。
如果默认的 8000 端口已经被占用,你想换成使用其它端口号,可以使用如下的命令:
$ python -m SimpleHTTPServer 8080
用 Python 快速实现 FTP 服务器
有时当你想快速搭建一个 FTP
服务器来临时实现文件上传下载时,这是特别有用的。我们这里利用 Python
的 Pyftpdlib
模块可以快速的实现一个 FTP
服务器的功能。
首先安装 Pyftpdlib
模块
$ sudo pip install pyftpdlib
通过 Python
的 -m
选项将 Pyftpdlib
模块作为一个简单的独立服务器来运行,假设我们需要共享目录 /Users/Mike/Docker
,只需要以下这个命令行就可以轻松实现:
$ cd /Users/Mike/Docker
$ python -m pyftpdlib
[I 2018-01-02 16:24:02] >>> starting FTP server on :::2121, pid=7517 <<<
[I 2018-01-02 16:24:02] concurrency model: async
[I 2018-01-02 16:24:02] masquerade (NAT) address: None
[I 2018-01-02 16:24:02] passive ports: None
至此一个简单的 FTP
服务器已经搭建完成,访问 ftp://IP:PORT
即可。例如类似下面的 URL:
ftp://192.168.100.49:2121
- 默认 IP 为本机所有可用 IP,端口为 2121。
- 默认登陆方式为匿名。
- 默认权限是只读。
如果你要建一个有认证且可写的 FTP
服务器,可使用类似以下指令:
$ python -m pyftpdlib -i 192.168.100.49 -w -d /tmp/ -u mike -P 123456
小插曲:测试时一直使用密码 000000
这样的弱密码做认证密码,在客户端登陆时一直提示认证失败。看来 Pyftpdlib
模块还做了基本的安全策略哟,不错的!
常用可选参数说明:
-i 指定IP地址(默认为本机所有可用 IP 地址)
-p 指定端口(默认为 2121)
-w 写权限(默认为只读)
-d 指定目录 (默认为当前目录)
-u 指定登录用户名
-P 指定登录密码
更多参数可以使用以下指令查询:
$ python -m pyftpdlib --help Usage: python -m pyftpdlib [options] Start a stand alone anonymous FTP server. Options:
-h, --help
show this help message and exit -i ADDRESS, --interface=ADDRESS
specify the interface to run on (default all interfaces) -p PORT, --port=PORT
specify port number to run on (default 2121) -w, --write
grants write access for logged in user (default read-only) -d FOLDER, --directory=FOLDER
specify the directory to share (default current directory) -n ADDRESS, --nat-address=ADDRESS
the NAT address to use for passive connections -r FROM-TO, --range=FROM-TO
the range of TCP ports to use for passive connections (e.g. -r 8000-9000) -D, --debug
enable DEBUG logging evel -v, --version
print pyftpdlib version and exit -V, --verbose
activate a more verbose logging -u USERNAME, --username=USERNAME
specify username to login with (anonymous login will be disabled and password required if supplied) -P PASSWORD, --password=PASSWORD
specify a password to login with (username required to be useful)
如果你需卸载 Pyftpdlib
模块,可以通过以下命令:
$ pip uninstall pyftpdlib
用 Python 快速实现 HTTP 和 FTP 服务器的更多相关文章
- day-1 用python编写一个简易的FTP服务器
从某宝上购买了一份<Python神经网络深度学习>课程,按照视频教程,用python语言,写了一个简易的FTP服务端和客户端程序,以前也用C++写过聊天程序,编程思路差不多,但是pytho ...
- 用Python在Android手机上架FTP服务器
当我们没有带数据线却将手机上的文件共享到电脑上时,架个简单的FTP服务器 可以帮我们快速解决问题.以共享手机里的照片为例: 首先将电脑.手机接入同一个wifi. 然后,手机上用QPython执行以下脚 ...
- python开发ftp服务器第一天(pyftpdlib)
学习了大约快一个月的python,现在开始有意识做一些项目.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 据我了解,python现在更多的是用于自动化运维方面, ...
- python3带tkinter窗口的ftp服务器,并使用pyinstaller打包成exe
python带tkinter窗口的ftp服务器,使用python3编写,打包使用pyinstaller,命令 pyinstaller -F .\ftpserver.py 代码也可在我的github上下 ...
- Python一秒搭建ftp服务器,帮助你在局域网共享文件【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- Python一秒搭建ftp服务器,帮助你在局域网共享文件
"老板 来碗面" "要啥面?" "内牛满面.." 最近项目上的事情弄得人心累,本来是帮着兄弟项目写套入口代码,搞着搞着就被拉着入坑了.搞开发 ...
- 助手系列之python的FTP服务器
电脑的OS是Win7,Python版本是2.7.9,安装了pip 因为python没有内置可用的FTP SERVER,所以先选一个第三方的组件安装上,这里我选的是pyftpdlib pip insta ...
- 快速搭建一个本地的FTP服务器
快速搭建一个本地的FTP服务器 如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试. 第一步:配置IIS Web服务器 1.1 控制面板中找到"程序& ...
- 从 Python 快速启动 CGI 服务器
很多人知道 Python 3 可以快速启动一个 HTTP 服务器: $ python3 -m http.server 8000 今天我查阅 http.server 模块发现它支持运行 CGI 脚本,只 ...
随机推荐
- 异常来自 HRESULT:0x80070057 (E_INVALIDARG)
莫名其妙的编译总会报错 异常来自 HRESULT:0x80070057 (E_INVALIDARG) 未能加载程序集....... 几次删除引用然后重新引用程序集还是报错 奔溃中.... 网上搜索还真 ...
- SLG手游Java服务器的设计与开发——网络通信
文章版权归腾讯GAD所有,禁止匿名转载:禁止商业使用:禁止个人使用. 一.前言 上文分析了我们这款SLG的架构,本章着重讲解我们的网络通信架构,由上文的功能分析我们可以得知,游戏的所有功能基本上属于非 ...
- vs2010中如何编写C语言程序
File->New->Project 在打开的New Project对话框中最左侧一栏中选择Visual C++下面的CLR,之后在其右侧的区域中选择CLR Empty Applicati ...
- Android中解析XML格式数据的方法
XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...
- 17初识select
多路复用 select 同时监控多个文件描述符的输入输出 <sys/types.h> <sys/times.h> <sys/select.h> int select ...
- Linux网络子系统之---- PHY 配置
MII即媒体独立接口,也叫介质无关接口. 它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1). 数据接口包括分别用于发送器和接收器的两条独立信道.每条信道都有自己的数据.时钟和控制信号. ...
- Rsync+sersync实现实时同步
介绍: sersync主要用于服务器同步,web镜像等功能.基于boost1.43.0,inotify api,rsync command.开发.目前使用的比较多的同步解决方案是inotify-too ...
- Maven编译代码的时候跳过单元测试
Maven编译代码的时候跳过单元测试 <properties> <maven.test.skip>true</maven.test.skip> </prope ...
- Uva 12304 - 2D Geometry 110 in 1!
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- Java Spring-Bean中属性注入
2017-11-06 20:29:13 类属性的注入的三种方法 1.接口方法注入 public interface injection{ public void setName(String name ...