这个是逗比根据地的备份镜像站(非官方)。牢记域名: [doubibackup.com]。搜索:标签云
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

『原创』SimpleHTTPServer 快速搭建HTTP Web服务 + 一键脚本

Shell脚本 Toyo 8评论
广告
本文最后更新于 2018年9月20日 19:53 可能会因为没有更新而失效。如已失效或需要修正,请留言!

有的时候你可能需要临时下载VPS中某个文件,但是又没有或者不想用SFTP去下载,那你可能就需要SimpleHTTPServer了。

SimpleHTTPServer是python自带的一个HTTP服务,可以方便的搭建一个临时的HTTP服务,提供文件浏览和下载的web服务。

使用步骤

注意,因为SimpleHTTPServer是python自带的一个组件,所以使用这个命令的前提就是系统已安装python

检查Python是否安装:

python -V
# 正常情况下应该返回 Python 2.7.x ,如果返回命令找不到 python: command not found ,那么说明没有安装Python。

安装 Python:

# CentOS 系统:
yum update && yum install python python2.7 -y

# Debian/Ubuntu 系统:
apt-get update && apt-get install python python2.7 -y

如果你只是临时想要下载几个VPS中的文件,那你可以直接使用,如果你是需要频繁的开放某个文件夹,以HTTP下载文件,那你适合使用脚本

注意:如果你开放的文件夹中有 index.html 文件,那会直接显示这个文件,如果没有这个文件那会以 文件列表的形式 显示目录下所有文件。

无论使用那种方法创建HTTP服务,创建完成之后都可以通过 http://VPS-IP:8000 访问你刚才开放的文件夹,默认是8000 可以自己改。

直接使用

前台运行:

首先 cd 到你要开放的文件夹中,然后使用下面的命令可以把 当前文件夹内的所有文件 发布到VPS的 8000 端口。

但是这条命令是直接在前台运行,不是后台运行的,也就是说如果 Ctrl + C ,则该端口就会关闭。

python -m SimpleHTTPServer 8000

后台运行:

在上述命令的最后加一个 & ,则该命令产生的进程在后台运行,不会影响当前终端的使用。

生成的新的进程为当前SSH的子进程,所以,当我们关闭当前SSH链接时,相应的子进程也会被kill掉,这也不是我们想要的结果。

python -m SimpleHTTPServer 8000 &

在命令的开头加一个 nohup ,忽略所有的挂断信号,如果当前SSH链接关闭,则当前进程会挂载到init进程下,成为其子进程,这样即使退出当前用户,其 8000 端口也可以使用。

nohup python -m SimpleHTTPServer 8000 &

结束进程:

如果你是直接用第一个命令前台运行,那你可以直接使用 Ctrl + C 来关闭HTTP服务。

如果你使用 & 或者 nohup 把进程放到了后台运行,那你就需要使用下面这个命令结束进程。

eval $(ps -ef | grep "[0-9] python -m SimpleHTTPServer" | awk '{print "kill "$2}')

脚本使用

无论使用那种方法创建HTTP服务,创建完成之后都可以通过 http://VPS-IP:8000 访问你刚才开放的文件夹,默认是8000 可以自己改。

下载启动/停止脚本,并赋予执行权限。

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/pythonhttp.sh && chmod +x pythonhttp.sh

启动HTTP服务器:

bash pythonhttp.sh start

停止HTTP服务器:

bash pythonhttp.sh stop

查看日志(日志位于你开放HTTP的文件夹内):

cat httpserver.log

如果你需要持续的查看/监控日志,那可以使用这个命令:

tail -f httpserver.log

启动脚本后,会提醒你输入要开放的HTTP端口 和 目录。

请输入要开放的端口 [1-65535]:
(默认端口: 8000):

请输入你要开放的目录(绝对路径):
(直接回车, 默认当前文件夹):

========================
请检查配置是否正确 !

端口 : 8000
目录 : /root
========================

按任意键继续,如有错误,请使用 Ctrl + C 退出.

HTTP服务器已经启动。 地址: http://VPS_IP:8000

脚本默认的SimpleHTTPServer端口是 8000 ,默认回车是开放脚本当前所在的 目录。

如果你需要重新开一个其他目录的HTTP服务器,那么不需要 bash pythonhttp.sh stop 停止,可以直接 bash pythonhttp.sh start ,因为会自动检测并停止已经运行的HTTP服务器。


这个脚本很简单,也只是我随手写的,因为主要考虑到这个命令本身就是为了快捷的开放一个临时的HTTP服务,如果写的太复杂就失去了意义。如果有什么BUG记得下面评论留言!

转载请超链接注明:逗比根据地 » 『原创』SimpleHTTPServer 快速搭建HTTP Web服务 + 一键脚本
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (17)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(8)个小伙伴在吐槽
  1. 顺便写一下Python3的http.server,毕竟Python2马上就要淘汰了
    peter2018-05-29 13:40 回复
  2. 如果能上传就好了。
    春秋2018-03-24 11:36 回复
  3. 怎样让SimpleHTTPServer使用80端口,我改80端口提示SimpleHTTPServe启动失败,别的端口就能
    kyo2017-12-28 11:29 回复
    • 启动失败提示什么?是否有其他程序占用 80端口?很多系统自带 Apache 或 Nginx ,他们会占用80端口,可以通过 netstat -lntp 命令查看端口占用情况,使用下面代码关闭Apache 或 Nginx:
      /etc/init.d/nginx stop
      /etc/init.d/apache2 stop
      
      Toyo2017-12-30 17:58 回复
  4. 楼主,想问一下,这个脚本能否改成同时也支持ipv6呢?我的网站已经开启了ipv6,也能访问,但是不知道怎么能同时支持ipv6的simplehttpserver,望楼主花一点时间处理一下,非常感谢
    yancysang2017-11-24 13:36 回复
    • SimpleHTTPServer 只适合于临时开放Web服务,选项很少,没见到监听 IPv6的选项,我也没办法。
      Toyo2017-11-24 13:47 回复
  5. 你好。脚本安装怎么设置断开连接后一样可以下载?现在断开连接后就不能下载了。还有教程有个小错误。启动http服务 bash pythonhttp start 。少了.sh
    lao2017-01-18 23:34 回复
    • 脚本中是用 nohup 来守护进程的,断开SSH连接后也是在后台运行的,我测试是正常的。 文章中的文字BUG修复了。
      同时我都快忘了我写过这个脚本了,看了下发现一些BUG,修复了一下。
      还有加入了 自动开放/删除端口 防火墙规则的功能。
      Toyo2017-01-19 00:06 回复