求问最简易的 web server 程序? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pluto0x0
V2EX    问与答

求问最简易的 web server 程序?

  •  
  •   pluto0x0 2023-03-22 18:57:47 +08:00 2127 次点击
    这是一个创建于 936 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    12 条回复    2023-03-26 19:17:37 +08:00
    displayabc
        1
    displayabc  
       2023-03-22 19:04:52 +08:00
    golang 几行代码吧
    dilu
        2
    dilu  
       2023-03-22 19:15:35 +08:00
    goland cmd 包
    php exec
    都很简单 自己搜一下关键词 十几分钟就能实现
    Aloento
        3
    Aloento  
       2023-03-22 19:20:05 +08:00
    C#也差不多

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

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

    app.Run();
    ```
    my3157
        4
    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
        5
    ysc3839  
       2023-03-22 20:13:16 +08:00 via Android
    收到请求执行程序就是标准的 CGI ,用 lighttpd 应该可以
    zhujinliang
        6
    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 命令赋予执行权限。另外,需要注意脚本文件的路径,也可以使用绝对路径以确保能够正常执行。
    AV1
        7
    AV1  
       2023-03-22 20:23:28 +08:00
    看你的“简易”要简易到什么程度,如果仅仅是拿到一个 get ,就执行一段脚本,python 自带的 http.server 就可以。
    https://docs.python.org/3/library/http.server.html
    xujinkai
        8
    xujinkai  
       2023-03-22 20:30:16 +08:00 via Android
    有现成的工具
    https://github.com/ncarlier/webhookd
    我用这个做了个 gitlab 提交发飞书消息的脚本,跑了半年多了,非常稳
    w07128597
        9
    w07128597  
       2023-03-22 20:32:30 +08:00 via iPhone
    https://github.com/adnanh/webhook
    这个库专门干这个的,go 写的部署也方便
    swulling
        10
    swulling  
       2023-03-22 20:41:09 +08:00 via iPhone
    我用 ChatGPT 用 Bash 做了一个,还可以接受 Post 参数作为命令参数。

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

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

    CRUD 全是是一句话搞定,跨平台。支持顶级语句,也不用导包。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     903 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:27 PVG 05:27 LAX 14:27 JFK 17:27
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86