使用 Python 快速实现 HTTP 和 FTP 服务器的方法
作者:运维之美 发布时间:2023-01-14 16:36:04
有时你需临时搭建一个简单的 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
参考文档
http://www.google.com
https://www.jb51.net/article/165958.htm
http://pyftpdlib.readthedocs.io/en/latest/index.html
https://www.jb51.net/article/165959.htm
总结
以上所述是小编给大家介绍的用 Python 快速实现 HTTP 和 FTP 服务器的方法,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://www.cnblogs.com/hi-linux/archive/2019/07/22/11224340.html
猜你喜欢
- 1、安装requests、xlrd、json、unittest库<1>pip 命令安装:pip install requests
- 在基于互联网的应用中,程序经常需要自动地发送电子邮件。如:一个网站的注册系统会在用户注册时发送一封邮件来确认注册;当用户忘记登陆密码的时候,
- #/usr/bin/env python#-*- coding:utf-8 -*-"""1.解析 cronta
- 最近经常使用字符串查找功能。 包括 1、全匹配查找字符串 2、模糊查找字符串 CHARINDEX 和 PATINDEX 函数都返回指定模式的
- 在最近一次项目有一个需求,点击按钮——异步提交——异步响应返回——根据响应返回值新开窗口。这有两个要点:异步响应之前不知道要打开窗口的URL
- 位置参数这是一个求等差数列和的函数,使用必需要传入一个参数n,这就是位置参数def sum(n): sum=0 &
- 1.超链接<a href="https://www.aspxhome.com" title="asp之家
- 代码如下: <!--[if IE 6]><script type="text/javascript"&
- Real Numbers实数实数是具有小数部分的数字, 当然, 实数不是专门用来表示小数的, 也可以用DECIMAL来存储那些无法用INTE
- 可以通过model.state_dict()或者model.named_parameters()函数查看现在的全部可训练参数(包括通过继承得
- 我们知道在PHP4里面,当我们使用一个类的时候,必须将该类所以文件使用include或require加进来,这样我们就可以使用类了。而对于P
- 内容摘要:在像网站首页这样的资源比较集中的页面中,那些栏目最经常被用户点击?居左居右对广告的点击率的影响是什么?“一切用数字说话”:以上问题
- 这个分页使用的是0游标,也就是Rs.Open Sql,Conn,0,1。但是感觉也快不了多少,10万条数据的分页时间300多豪秒之间。风格A
- 要向数据库中添加超级链接,要经过两个步骤,一是在表中定义字段类型为“超级链接”,一是向此字段中添加数据。要在表中定义字段类型为“超级链接”,
- 本文实例讲述了Python利用matplotlib绘制约数个数统计图。分享给大家供大家参考,具体如下:利用Python计算1000以内自然数
- Python的版本有很多,很多第三方库也有很多不同的版本,不同的版本也可能是互不兼容的,在本机运行不同的项目,可能需要不同的环境。为了不和本
- python 封装tokenimport datetimeclass MyJwt:def __init__(self): &n
- 尼姆游戏是个著名的游戏,有很多变种玩法。两个玩家轮流从一堆物品中拿走一部分。在每一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并
- 在编写 XMLHttpRequest 请求时,需要掌握服务器端返回的内容。针对 Firefox 浏览器,我们常用的 Firebug 就能非常
- 我们可用如下代码进行监控:函数中使用了fso对象来读取文件属性。Function File_GetLastModifi