Calcifer Calcifer 2
Python

python简单http服务供下载

2017/08/30 19:37 5511 次阅读 王梓
打赏
✸ ✸ ✸

一行命令启动文件下载服务

需要临时在两台机器之间传文件?不想装 FTP、不想配 Nginx?Python 内置的 HTTP 服务器一行命令就能搞定。

Python 3 用法

# 进入要分享的目录
cd /path/to/share

# 启动 HTTP 服务(默认 8000 端口)
python3 -m http.server

# 指定端口
python3 -m http.server 9090

# 指定绑定地址(只允许本机访问)
python3 -m http.server 8000 --bind 127.0.0.1

# 指定目录(不用 cd)
python3 -m http.server 8000 --directory /tmp/files

启动后,在浏览器访问 http://IP:8000/ 就能看到目录列表,点击文件即可下载。

Python 2 用法(旧系统)

# Python 2 的模块名不同
python -m SimpleHTTPServer 8000

使用流程

服务器 A (有文件)                    服务器 B (要下载)
      |                                    |
      v                                    |
cd /data/backup                            |
python3 -m http.server 9090                |
      |                                    v
      |                          wget http://A_IP:9090/backup.tar.gz
      |                          或 curl -O http://A_IP:9090/backup.tar.gz
      v                                    |
Ctrl+C 停止服务                            v
                                      文件下载完成

实战场景

场景1:服务器间传文件

# 服务器 A:启动服务
cd /data/backup
python3 -m http.server 9090

# 服务器 B:下载文件
wget http://192.168.1.100:9090/db_backup.sql.gz
# 或
curl -O http://192.168.1.100:9090/db_backup.sql.gz

场景2:局域网分享文件给同事

# 分享当前目录
python3 -m http.server 8080

# 同事在浏览器打开你的 IP:8080 即可浏览和下载
# 查看自己的 IP
hostname -I   # Linux
ifconfig | grep inet   # macOS

场景3:前端开发本地预览

# 在前端项目目录启动
cd ~/projects/my-website
python3 -m http.server 3000

# 浏览器打开 http://localhost:3000 预览静态页面
# 比直接打开 file:// 好,因为 AJAX 请求需要 HTTP 协议

场景4:配合 nohup 后台运行

# 后台运行,不占用终端
nohup python3 -m http.server 8000 --directory /data/share &> /dev/null &

# 查看是否在运行
ss -tlnp | grep 8000

# 停止
kill $(lsof -t -i:8000)

安全注意事项

  • 不要在公网长期运行:这个服务没有认证,任何人都能访问和下载
  • 注意目录范围:它会暴露指定目录下的所有文件,包括隐藏文件
  • 用完即关:传完文件立即 Ctrl+C 停止
  • 防火墙:如果跨机器访问,确保端口已开放
# 临时开放端口(CentOS/RHEL)
firewall-cmd --add-port=8000/tcp
# 用完关闭
firewall-cmd --remove-port=8000/tcp

# 或者用 iptables
iptables -I INPUT -p tcp --dport 8000 -j ACCEPT

替代方案对比

工具优点缺点
python3 -m http.server零安装,一行命令无认证,单线程
scp加密传输,安全需要 SSH 权限
rsync增量传输,断点续传需要两端都安装
nc (netcat)极简,管道传输不支持目录浏览
nginx高性能,可配置认证需要安装和配置

总结

python3 -m http.server 是临时文件传输的最佳选择:零安装、一行命令、浏览器可视化。记住用完就关,不要在生产环境长期运行。

✸ ✸ ✸

📜 版权声明

本文作者:王梓 | 原文链接:https://www.bthlt.com/note/12113691-Pythonpython简单http服务供下载

出处:葫芦的运维日志 | 转载请注明出处并保留原文链接

📜 留言板

留言提交后需管理员审核通过才会显示