跳转到主要内容

shell的JSON-RPC标准

项目描述

jsh:JSON-RPC标准用于shell

jsh 指的是

  • JSH:一个标准协议,使“shell脚本”能够以类似于JSON-RPC的方式相互通信,包括一个jshlib.py单文件Python库参考实现。
  • jsh:一个将标准shell-like参数转换为json的命令行工具。

JSH规范几乎与JSON-RPC 2.0规范相同。它是一个规范,用于命令行程序通过--jsh-request参数接收jsonrpc兼容的json blob。即如果ls支持JSH,以下可能具有类似功能

ls --all /foo/bar

REQUEST='{
  "jsonrpc":"2.0",
  "method":"ls",
  "params":{"all":true, "path": "/foo/bar"}
}'
ls --jsh-request "$REQUEST"

ls --jsh-request $(jsh m=ls --all=true --path='"/foo/bar"')

除了这个之外,当传递--jsh-request时,JSH要求以下内容

  • 必须在stdout上输出有效的json,除非在paramsmethod中指定了文档化的应用程序定义的标志(即方法与二进制方法)
    • 如果输出多个'结果'(例如文件列表、搜索结果等),必须以单独的记录形式输出,并用换行符\n分隔
    • 这些可以通过jshlib.load_jsh迭代插入
  • 应该向stderr输出结构化日志,每行一个json记录,格式如下(允许其他键)
{"lvl":"ERROR", "msg":"this is a message"}

JSH 是专门为构建系统开发,常需要结合多个阶段和多种编程语言的输出而设计的。然而,它的用途更加广泛。

  • 使用 JSON 来代替易出错的输出解析。
    • 提供开发者工具的标准化可组合性,无论是操作系统级别还是更高级别。
    • 仍然允许在任意语言中进行快速开发和原型制作。
  • 允许用户使用 json 查询工具(如 jq)对数据进行修改和重定向,而不是像 awksed 这样的基于文本的工具。
  • 允许 shell 脚本快速“托管”。
    • 通过 Web 请求轻松使它们工作,从而实现更快、更干净的系统管理员接口。

用法和 API

pip install jshlib

jsh 命令行工具

包含命令行工具 jsh,它可以

  • 创建用于与 JSH 兼容命令一起使用的 json-rpc 请求。
  • (未来) 格式化 JSON,使其更易于阅读
  • (未来) 为某些格式的输出创建格式良好的表格

jshlib Python 库

以下函数和类型是基本必需的

  • parse_jsh_argv:解析 JSH 兼容的 argv 命令行参数
  • RequestError 对象,它们代表适当的 JSON-RPC 对象。
  • dump_stdoutdump_stderr 用于将 Python 对象(字典、列表、整数等)输出到相应的输出。
  • load_json_iter 会从流(例如 stdin、stdout、文件套接字等)持续加载 JSON 对象。这允许半高性能地链式连接 jsh 工具,假设每个工具都按其“记录”可用时输出。

计划尽快支持更多语言。

许可证

源代码许可如下

任选其一。

除非你明确表示,否则任何根据 Apache-2.0 许可证定义有意提交以包含在你的作品中的贡献,均应按上述方式双重许可,而不附加任何额外条款或条件。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源代码分发

jshlib-0.1.0.tar.gz (7.9 kB 查看哈希)

上传时间 源代码

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面