求问最简易的 web server 程序?

2023-03-22 18:57:47 +08:00
 pluto0x0

需求非常简单,收到一个 http 请求就执行一个对应的 shell 脚本,以前一般使用 python+Flask ,现在想问问有什么开箱即用的程序可以做到?

1650 次点击
所在节点    问与答
12 条回复
haython
2023-03-22 19:04:52 +08:00
golang 几行代码吧
dilu
2023-03-22 19:15:35 +08:00
goland cmd 包
php exec
都很简单 自己搜一下关键词 十几分钟就能实现
Aloento
2023-03-22 19:20:05 +08:00
C#也差不多

```c#
var app = WebApplication.Create(args);

app.MapGet("/", () => "Hello World!");

app.Run();
```
my3157
2023-03-22 19:50:20 +08:00
```shell
while true; do echo -e "HTTP/1.1 200 OK\n\n $(uptime)" | nc -l -p 8080 -q 1; done
```
ysc3839
2023-03-22 20:13:16 +08:00
收到请求执行程序就是标准的 CGI ,用 lighttpd 应该可以
zhujinliang
2023-03-22 20:17:54 +08:00
ChatGPT 的回复:

以下是实现的示例代码:

package main

import (
"fmt"
"log"
"net/http"
"os/exec"
)

func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
cmd := exec.Command("./script.sh") // shell 脚本文件名
output, err := cmd.Output()
if err != nil {
fmt.Fprintf(w, "执行 shell 脚本失败:%v", err)
return
}
fmt.Fprintf(w, "执行结果:%s", output)
})

log.Fatal( http.ListenAndServe(":8080", nil))
}

在该示例中,收到任何 HTTP 请求都会执行名为 script.sh 的 shell 脚本文件,并将结果返回给客户端。客户端可以使用任何 HTTP 客户端工具(例如 curl )发送请求。

需要注意的是,确保 shell 脚本文件具有可执行权限,可以使用 chmod +x script.sh 命令赋予执行权限。另外,需要注意脚本文件的路径,也可以使用绝对路径以确保能够正常执行。
DOLLOR
2023-03-22 20:23:28 +08:00
看你的“简易”要简易到什么程度,如果仅仅是拿到一个 get ,就执行一段脚本,python 自带的 http.server 就可以。
https://docs.python.org/3/library/http.server.html
xujinkai
2023-03-22 20:30:16 +08:00
有现成的工具
https://github.com/ncarlier/webhookd
我用这个做了个 gitlab 提交发飞书消息的脚本,跑了半年多了,非常稳
w07128597
2023-03-22 20:32:30 +08:00
https://github.com/adnanh/webhook
这个库专门干这个的,go 写的部署也方便
swulling
2023-03-22 20:41:09 +08:00
我用 ChatGPT 用 Bash 做了一个,还可以接受 Post 参数作为命令参数。

但是本站不欢迎 ChatGPT 回复,所以就不贴了。
mmdsun
2023-03-22 21:05:44 +08:00
你这个写个 shell 就可以了,如果稍微复杂点功能,那试试看:

https://dotnet.microsoft.com/zh-cn/apps/aspnet/apis

CRUD 全是是一句话搞定,跨平台。支持顶级语句,也不用导包。
julyclyde
2023-03-26 19:17:37 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/926307

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX