xbin: 不需要安装就可以使用的 jq 等软件

2022-05-04 18:24:44 +08:00
 scriptB0y

经常遇到需要运行 jq, yq, ipcalc 这种软件却发现机器上没有装的情况。我就想,这些都是处理 io 的软件,为什么需要安装呢?能否通过 serverless 的方式调用服务来运行?

于是做了一个小工具,可以直接通过 cURL (或者其他 http 客户端)去调用 jq 。

使用说明可以看:

https://xbin.io

当然也可以“安装” (其实就是在你的 shell 定义一个函数,帮你生成 curl )一个 xbin 命令: https://github.com/xbin-io/xbin

比如要执行 jq 的话,只要这样用就可以啦:docker inspect asdf | xbin jq -C .

目前支持的命令列表: https://xbin.io/w/tool

2977 次点击
所在节点    分享创造
10 条回复
Livid
2022-05-04 18:27:02 +08:00
我们在 V2EX 里有类似的做法,就是把一些 IO 操作(比如图片调整尺寸)变成一个容器里的服务。
scriptB0y
2022-05-04 18:38:42 +08:00
@Livid 我觉得是可行的。

有一个比较好玩的地方是,我的 http 服务只解析了用户的 http 请求 header ,body 作为命令执行的 stdin pipe 给了进程,然后将进程产生的 stdout 作为 http stream response 返回给用户。

这样,像执行这个命令:

```
echo 'import time;\nfor i in range(5):\n print(time.time(), flush=True)\n time.sleep(1)' | curl -X POST --data-binary @- http://xbin.io/python -H "X-Args: -"
```

会看到每秒一行输出,而不是等 5s 之后看到所有的输出。

效果就是,虽然我的机器内存很小,但是可以对无限大的文件做计算 shasum, 解压,等操作,因为命令只读 stdin 写 stdout ,没有保存本地文件。(虽然理论上没限制,但是为了防止 abuse 还是限制了 client_body_size )

(需要注意配置一下 CDN ,Nginx ,uWSGI 等,让它们不要 cache )
beordle
2022-05-04 18:51:30 +08:00
老实讲,这个使用托管服务有信息泄漏的风险。也会有被注入的问题。都可以连接外网了,当然装包是最好的选择。追求绿色软件,也可选择静态 binary ,docker images 都是可以。我觉得这个服务部署在内网倒是有更大的用武之地,也更加好用。公网应用我个人持负面的态度。
leishi1313
2022-05-04 21:54:56 +08:00
很有意思,感觉这种做成 serverless ,或者能自建的也不错
scriptB0y
2022-05-04 22:54:47 +08:00
@beordle 同意你的看法。不过很多工具使用频率很低,而且不会泄露隐私,比如 ip 地址计算工具 https://xbin.io/w/tool/ipcalc , 计算器 https://xbin.io/w/tool/qalc ,存储单位计算器 https://xbin.io/w/tool/bcal ,时间换算 https://xbin.io/w/tool/date 等等。使用 xbin 也不会泄露什么东西。

内网的话其实可以有一个很简单的替代方案,就是找一台机器安装上常用软件,然后 cat a.json | ssh example.com "jq -C ." 其实效果是一样的。
lizhenda
2022-05-05 10:58:07 +08:00
直接 docker 跑命令应该也差不多吧
scriptB0y
2022-05-05 11:15:17 +08:00
@lizhenda 是的,效果差不多。
zagfai
2022-05-05 12:12:21 +08:00
那不是要装一个 docker ?
est
2022-05-05 12:16:29 +08:00
echo 1.json | python -m json.tools | grep XXX 基本够用了。
iqoo
2022-05-05 13:40:47 +08:00
最好是把 bash 以及常用命令编译成 wasm ,直接在浏览器里运行。

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

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

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

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

© 2021 V2EX