请问 shell 可以实现一个简单的 web 接口吗?

2017-10-31 10:46:02 +08:00
 K1W1
不想手动发服务器也不想用 jenkins,然后发现 gitlab 有一个 git 钩子,然后只需要提供的一个 web 接口来接收事件,然后调用发布的脚本就可以了。但是因为只需要一个接口,不想要 java、python 去实现,请问 shell 可以实现吗?
9109 次点击
所在节点    Linux
44 条回复
araraloren
2017-10-31 11:11:06 +08:00
nc 可以用来监听某一个端口

nc -l <port>
clino
2017-10-31 11:15:05 +08:00
@araraloren nc 不能处理 web 请求吧,没办法返回 response?
lxf1992521
2017-10-31 11:27:22 +08:00
`man bash`, 然后搜索`Opening File Descriptors for Reading and Writing`章节,可以实现套接字的读和写。
whorusq
2017-10-31 11:30:03 +08:00
从 可控性 和 简单度来说,推荐 Python
htfy96
2017-10-31 11:56:59 +08:00
socat,可以 accept 一个请求后直接新起一个进程,把进程的输入输出和 socket 关联起来
rrfeng
2017-10-31 11:59:59 +08:00
当然可以。
aWangami
2017-10-31 12:01:49 +08:00
简单的 web 接口,为啥不用 Python/Node 之类的来简化工作呢?
TangMonk
2017-10-31 12:02:53 +08:00
用 golang 编译成一个可执行文件就行了,不用安装环境又简单
K1W1
2017-10-31 12:05:42 +08:00
@araraloren #1 我试了的确可以收到请求,但是好像只能通过 ctrl + c 才能中断连接
chinuno
2017-10-31 12:06:01 +08:00
Python 自带简单的 http server。不需要其他依赖单个文件就能实现 get post 的处理了
K1W1
2017-10-31 12:07:12 +08:00
@aWangami #7 因为只有一个接口,大才小用了,而且我们服务器没有 python 或 node 环境
jtsai
2017-10-31 12:12:27 +08:00
shell http,写 response 好难,request 就简单了。
whileFalse
2017-10-31 12:16:52 +08:00
@K1W1 #11 golang,极易部署
cnwtex
2017-10-31 12:19:59 +08:00
楼上一群智障吧, 人家问 shell 能不能, 推荐一堆 go/python/node
des
2017-10-31 12:22:15 +08:00
@clino nact 可以用 lua
pagxir
2017-10-31 12:33:18 +08:00
楼主听过 cgi 否。直接用 socat 然后按照 cgi 来处理
boboliu
2017-10-31 12:35:58 +08:00
@cnwtex shell 实现要更复杂,推荐楼主选择更为简单易行的方案不是很正常么?
huangzxx
2017-10-31 12:37:46 +08:00
你的需求应该用 gitlab-ci
araraloren
2017-10-31 12:41:35 +08:00
@clino 能啊 不简单而已。。

不过不如 python perl ruby 了。。
araraloren
2017-10-31 12:42:32 +08:00
@K1W1 有 perl 环境也可以啊,写起来都是简单的飞起

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

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

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

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

© 2021 V2EX