用 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 脚本,只 ...
随机推荐
- 20165324_mypwd
20165324_mypwd 实验要求 实验要求 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 实现mypwd 测试mypwd 背景知识 文件存储结构 介绍文件 ...
- (转)SQL Server 2008登录错误:无法连接到(local)的解决
在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题.特别对于我们这样的新手而言简直郁闷的要死,好不容易装玩了又出现了问题.此篇文章意在解决安装步骤没有问题,但安装后无法登录的问 ...
- Spring MVC 复习笔记04
复习 springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler.(可以通 ...
- 前端学习笔记之CSS文档流
先引用一段W3C的文档: 9.3 Positioning schemes In CSS 2.1, a box may be laid out according to three positionin ...
- java bitmap/bitvector的分析和应用
转自: http://shmilyaw-hotmail-com.iteye.com/blog/1741608 简介 bitmap在很多海量数据处理的情况下会用到.一些典型的情况包括数据过滤, ...
- Mac下安装hexo Error: Cannot find module './build/Release/DTraceProviderBindings 解决
参考: Github:Mac 下已经装了hexo,仍旧报错 官方文档 $ npm install hexo --no-optional if it doesn't work try $ npm uni ...
- Google V8 引擎 原理详解
V8 引擎概览 V8 引擎简介 Google V8 引擎使用 C++ 代码编写,实现了 ECMAScript 规范的第五版,可以运行在所有的主流 操作系统中,甚至可以运行在移动终端 ( 基于 ARM ...
- Shell脚本之无限循环的两种方法
for #!/bin/bash ;i<;)) do let "j=j+1" echo "-------------j is $j ----------------- ...
- 并发编程-synchronized关键字大总结
0.synchronized 的特点: 可以保证代码的原子性和可见性. 1.synchronized 的性质: 可重入(可以避免死锁.单个线程可以重复拿到某个锁,锁的粒度是线程而不是调用).不可中断( ...
- DWZ 框架详解
这是一个智障的框架,能别用就别用.