快速开启简单http服务
in 日常技巧 with 2 comments

快速开启简单http服务

in 日常技巧 with 2 comments

在使用Linux时,不知道你有没有这样的体会,需要将服务器上的某一个或几个文件(比如配置文件)下载到本地。

在此之前,我一般使用cat将文本打印到屏幕,而后复制粘贴到本地,但是二进制文件就不能这样使用了。

Python

20190723190405.png

最没有成本而又最方便的就是使用python了,它内置了一个简单http服务模块((⊙﹏⊙)b python2和python3模块的名字又不一样)。
各大发行版的服务器都安装过Python了,使用如下命令即可自适应python版本临时开启http服务了:

HTTP_PORT=8080 && python3 -m http.server $HTTP_PORT || python -m simpleHTTPServer $HTTP_PORT

此时使用浏览器打开http://服务器ip:8080/就可以浏览服务器刚刚所在目录下的文件了。

gossa

20190723190735.png

这是一个低成本的实现方案,无需依赖其它服务(如phpmysql等),并且操作简单,可以在线上传文件等。

gossa是一个使用Go语言编写,并开源在github上的项目

官方描述为:一个快速,简单的文件网络服务器,无需依赖,只有210行代码,易于查看。

它默认有一个简单的前端UI可实现:

这里直接使用官方编译的二进制文件,并配合caddy提供简单的认证服务。

mkdir /tmp/http.server && cd /tmp/http.server
curl -L -o caddy.tar.gz "https://github.com/mholt/caddy/releases/download/v0.11.1/caddy_v0.11.1_linux_amd64.tar.gz"
tar xvzf caddy.tar.gz 
curl -L -o gossa "https://github.com/pldubouilh/gossa/releases/download/v0.0.7/gossa-linux64"
chmod +x ./gossa ./caddy
cat <<EOF >./Caddyfile
*:8001
basicauth / lvmoo com
proxy / 127.0.0.1:8000
EOF
share_dir=/tmp
echo  "./gossa -h 127.0.0.1 -p 8000 $share_dir & ulimit -n 8192 && ./caddy" > start.sh
echo killall gossa > stop.sh
bash start.sh

解释:
gossa监听8000端口
caddy监听8001端口,反向代理本地8000端口
用户访问不到8000,可访问8001且需要使用用户名lvmoo密码com进行简单认证
认证成功后通过8001端口可以在线访问服务器上的/tmp目录
(这些项目可以在上面的脚本里面修改)

总结

通过以上两种方式皆可便捷开启服务器的http服务,如果只需要下载使用第一种方法更为方便。
而后者可以上传以以及在线修改相关的文件,也可以依赖caddy做简单认证。

但无论是哪一种,都不是很安全的,所以并不推荐长期开启服务(只做临时周转使用)。即用即开,用完即关,以免信息泄露。

--EOF--

Responses
  1. 非技术的路过。

    Reply
  2. 我记得有个东西叫caddy ̄﹃ ̄

    Reply