Linux:一行代码创建一个可执行命令的 Web 服务器

系统 Linux
因为有一个始终执行的循环使用 while true,让 nc 命令持续在端口 8080 监听浏览器请求,每次刷新时,都会执行作为参数传递给 web.sh 的脚本,其结果连同一些 HTTP 标头会传递给 nc,后者又会发送给我们的浏览器。

如果你想让系统更加安全,那可能要花费很多时间,相反,如果你想让系统不安全,那就是分分钟的事情,本文分享一个不安全的方式在 Linux 上快速建立一个 Web 服务,它可以将 bash 指令的执行结果返回给前端,提醒一下,千万别在生产环境使用。

首先编写这样一行代码,保存为 web.sh

#!/bin/bash
while true; do
echo -e "HTTP/1.1 200 OK\n\n$($1)" | nc -l -k -p 8080 -q 1;
done

然后添加可执行权限:

chmod u+x web.sh

执行这个脚本,给他一个命令参数,比如 ps aux:

./web.sh "ps aux"

打开浏览器,输入网址 http://127.0.0.1:8080,就会看到下图所示的结果:

图片

每次刷新浏览器都会打印 ps aux 命令的最新结果!

为什么可以这样?

#!/bin/bash
while true; do
echo -e "HTTP/1.1 200 OK\n\n$($1)" | nc -l -k -p 8080 -q 1;
done

因为有一个始终执行的循环使用 while true,让 nc 命令持续在端口 8080 监听浏览器请求,每次刷新时,都会执行作为参数传递给 web.sh 的脚本,其结果连同一些 HTTP 标头会传递给 nc,后者又会发送给我们的浏览器。

一条简单的命令就可以起到远程监控服务器进程的效果,是不是很方便?不过这样并不安全,自己玩玩可以,不推荐生产环境使用。

责任编辑:武晓燕 来源: Python七号
相关推荐

2018-01-18 10:57:48

Linux服务器命令

2014-04-14 15:54:00

print()Web服务器

2023-03-30 13:22:45

nginxweb服务器

2021-08-31 09:49:37

CPU执行语言

2019-05-08 14:37:49

Web服务器HTTP

2019-04-25 09:52:38

SSHLinux服务器

2022-02-22 11:57:32

BOAWeb服务器

2016-12-02 08:53:18

Python一行代码

2020-09-09 16:00:22

Linux进程

2022-08-16 14:47:08

服务器端Web端脚本

2017-05-24 12:30:34

2022-09-28 10:12:50

Python代码可视化

2017-04-05 11:10:23

Javascript代码前端

2010-03-02 13:23:02

VNC Linux服务

2021-03-22 16:45:58

服务器命令

2022-09-20 08:43:37

Go编程语言Web

2017-11-20 14:46:27

命令代码

2024-03-08 12:45:00

C#Web服务器

2022-03-28 17:10:18

树莓派服务器旧硬件

2022-02-01 16:02:03

PythonWeb服务器
点赞
收藏

51CTO技术栈公众号