利用Python内置模块与第三方库快速搭建HTTP及FTP数据传输服务
本文介绍如何使用Python快速搭建HTTP和FTP服务以实现服务器间文件传输。通过Python内置的SimpleHTTPServer模块,可一键开启指定端口的HTTP服务;利用第三方库pyftpdlib编写自定义脚本,可配置用户名、密码及端口,解决内置FTP匿名模式无上传权限的问题,从而高效完成文件上传与下载任务。
服务器之间进行HTTP数据传输
可以直接利用Python内置的http服务功能:
python -m SimpleHTTPServer 8000
执行该指令后,当前目录即开启HTTP服务,默认端口为8000(若未指定端口号,则自动使用8000)。若需在其他机器上获取该目录下的文件,只需在目标机器执行以下命令:
wget ip:port/文件名
传输速度相当可观。
开启FTP上传文件功能
安装用于Python的FTP第三方组件:
pip install pyftpdlib
编写启动脚本
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
import os
def main():
# Instantiate a dummy authorizer for managing 'virtual' users
authorizer = DummyAuthorizer()
# Define a new user having full r/w permissions and a read-only
# anonymous user
authorizer.add_user('user', '12345', '.', perm='elradfmwM')
authorizer.add_anonymous(os.getcwd())
# Instantiate FTP handler class
handler = FTPHandler
handler.authorizer = authorizer
# Define a customized banner (string returned when client connects)
handler.banner = "pyftpdlib based ftpd ready."
# Specify a masquerade address and the range of ports to use for
# passive connections. Decomment in case you're behind a NAT.
#handler.masquerade_address = '151.25.42.11'
#handler.passive_ports = range(60000, 65535)
# Instantiate FTP server class and listen on 0.0.0.0:2121
address = ('', 8888)
server = FTPServer(address, handler)
# set a limit for connections
server.max_cons = 256
server.max_cons_per_ip = 5
# start ftp server
server.serve_forever()
if __name__ == '__main__':
main()
其中8888为设定的端口号,user为用户名,12345为指定的密码。此时,只需运行该脚本,即可使用FTP工具连接该FTP服务器并上传文件。
如果不使用自行编写的脚本,而是直接调用内置脚本:
python -m pyftpdlib -p 8888
此时连接该FTP服务器使用的是默认用户anonymous,但在尝试上传文件时会发现该用户没有上传权限。因此,建议自行编写运行脚本以解决权限问题。
以上这篇使用python实现http及ftp服务进行数据传输的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













