用 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 脚本,只 ...
随机推荐
- PAT 1053 Path of Equal Weight[比较]
1053 Path of Equal Weight(30 分) Given a non-empty tree with root R, and with weight Wi assigned t ...
- 千亿级SaaS市场:企业级服务的必争之地
2015年企业级服务融资案例数量飙升,大额融资频现.不少企业纷纷涉足企业级服务市场,其中,以IM为主打的阿里钉钉,以企业CRM为主的纷享逍客高调进入人们的视野,以产品管理为核心.集成多种工具服务的iC ...
- 深入理解jvm--Java中init和clinit区别完全解析(转)
转自:http://blog.csdn.net/u013309870/article/details/72975536 init和clinit区别 ①init和clinit方法执行时机不同 init是 ...
- android系统提供的几种颜色Color
http://blog.csdn.net/feiyangxiaomi/article/details/38338305 记录一下android自带颜色. Constants public static ...
- P1174 打砖块
P1174 打砖块 普通分组背包:50pts 题解说的啥????(大雾) 看了半天 $s[0/1][i][j]$表示第$i$列用$j$发子弹,最后一发是1/否0打在该列上的价值 $f[0/1][i][ ...
- POI之Excel导出
1,在maven的pom文件中添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId& ...
- i春秋之荒岛求生write-up
i春秋之荒岛求生write-up 第一关 这一关的答案是在题目的最后一句加粗的 躺平等死 和 勇敢战斗 中进行选择,结合前文中提到的 如果你想出去,就必须打败他们 自然得出答案是 勇敢战斗 . 第二关 ...
- 关于Cooperation.GTST
Cooperation.GTST团队项目简介 我们打算利用Android Studio开发一款博客园的Android APP,初步设想能够实现在Android手机平台使用博客园的相关功能,后续想法会在 ...
- python strip()函数 os.popen()
函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字 ...
- c++ 插入容器元素(insert)
#include <iostream> #include <vector> using namespace std; int main () { vector<int&g ...