当前位置: 首页 > 后端技术 > Python

用Python快速实现HTTP和FTP服务器

时间:2023-03-26 17:49:41 Python

用Python快速实现HTTP服务器有时候你需要临时搭建一个简单的WebServer,又不想安装Apache、Nginx等更复杂的HTTP服务程序。这时候可以使用Python内置的SimpleHTTPServer模块快速搭建一个简单的HTTP服务器。SimpleHTTPServer模块可以将您指定目录中的文件和文件夹显示为一个简单的网页。假设我们需要在web模式下共享目录/Users/Mike/Docker,我们只需要下面的命令行就可以轻松实现:$cd/Users/Mike/Docker$python-mSimpleHTTPServerServingHTTPon0.0.0.0port8000...SimpleHTTPServer该模块默认会在8000端口监听一个HTTP服务,然后打开浏览器输入http://IP:Port即可访问该网页。例如一个类似如下的URL:http://192.168.100.49:8000如果你需要web服务有一个默认页面,你可以在该目录下创建一个名为index.html的文件。如果没有默认页面,目录的内容将以列表的形式显示。如果默认的8000端口已经被占用,想使用其他端口号,可以使用以下命令:$python-mSimpleHTTPServer8080用Python快速实现一个FTP服务器有时候想快速搭建一个FTP服务器来上传文件暂时这在下载时特别有用。这里我们使用Python的Pyftpdlib模块来快速实现一个FTP服务器的功能。首先安装Pyftpdlib模块$sudopipinstallpyftpdlib通过Python的-m选项将Pyftpdlib模块作为一个简单的独立服务器运行,假设我们需要共享目录/Users/Mike/Docker,只需要如下命令行即可轻松实现:$cd/Users/Mike/Docker$python-mpyftpdlib[I2018-01-0216:24:02]>>>在::2121上启动FTP服务器,pid=7517<<<[I2018-01-0216:24:02]并发模型:异步[I2018-01-0216:24:02]伪装(NAT)地址:无[I2018-01-0216:24:02]被动端口:Nonetothis一个简单的FTP服务器已经搭建完成,访问ftp://IP:PORT即可。例如类似下面的URL:ftp://192.168.100.49:2121默认IP为本机所有可用IP,端口为2121,默认登录方式为匿名。默认权限为只读。如果你想建立一个认证的可写的FTP服务器,你可以使用类似下面的命令:$python-mpyftpdlib-i192.168.100.49-w-d/tmp/-umike-P123456Interlude:alwaysusedduringtesting使用弱口令如password000000作为鉴权密码,客户端登录时一直提示鉴权失败。看来Pyftpdlib模块也有基本的安全策略,不错!常用可选参数说明:-i指定IP地址(默认为本机所有可用的IP地址)-p指定端口(默认为2121)-w写权限(默认为只读)-d指定目录(默认为当前目录)-u指定登录用户名-P指定登录密码更多参数可以使用以下命令查询:$python-mpyftpdlib--helpUsage:python-mpyftpdlib[options]启动单机匿名FTP服务器。选项:-h,--help显示此帮助消息并退出-iADDRESS,--interface=ADDRESS指定要运行的接口(默认所有接口)-pPORT,--port=PORT指定要运行的端口号(默认2121)-w,--writegrants登录用户的写访问权限(默认只读)-dFOLDER,--directory=FOLDER指定要共享的目录(默认当前目录)-nADDRESS,--nat-address=ADDRESS用于被动连接的NAT地址-rFROM-TO,--range=FROM-TO到你的TCP端口范围se用于被动连接(例如-r8000-9000)-D,--debugenableDEBUGloggingevel-v,--versionprintpyftpdlibversionandexit-V,--verbose激活更详细的日志记录-uUSERNAME,--username=USERNAME指定用户名登录(匿名登录将被禁用,如果提供则需要密码)-PPASSWORD,--password=PASSWORD指定登录密码(用户名需要有用)如果你需要卸载Pyftpdlib模块,你可以使用以下命令:$pipuninstallpyftpdlib