shell的JSON-RPC标准

jshlib的Python项目详细描述


jsh:shell的JSON-RPC标准

jsh指两者:

  • jsh:“shell脚本”能够相互对话的标准协议 以类似于JSON-RPC的方式,以及jshlib.py单文件python 库引用实现
  • jsh:一个用于转换标准类shell参数的命令行工具 变成json。

jsh规范几乎与JSON-RPC 2.0规范相同。它是 采用jsonrpc兼容json的命令行程序规范 blob通过参数--jsh-request参数。即,如果支持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中定义的标志另有规定(即方法vs 方法二进制)
    • 如果输出多个“结果”(即文件列表、搜索结果, 等),必须 将它们输出为用新行分隔的单独记录\n
    • 这些可以通过jshlib.load_jsh
    • 迭代地注入。
  • 应该在 窗体(允许使用其他键)
{"lvl":"ERROR","msg":"this is a message"}

JSH是为构建系统而显式开发的,通常需要 使用许多不同的编程语言组合来自多个阶段的输出。 然而,它的目的更广泛:

  • Elminiate输出的易出错解析,改用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对象(dict、list、int等) 到各自的输出。
  • load_json_iter将从流(即。 stdin、stdout、文件套接字等)。这允许半性能链接 jsh工具,假设每一个工具都输出其“记录” 可用。

计划尽快支持更多的语言。

许可证

源代码是根据

由你选择。

除非您明确说明,否则任何有意提交的出资 对于您在Apache-2.0许可证中定义的工作,应 按上述要求获得双重许可,无任何附加条款或条件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java传递实现接口的内部类   java为什么managedbean方法在post请求中的过滤器调用之前调用   java Android应用程序在Android M,O上崩溃,登录A/libc时出错:tid 17938中的致命信号11(SIGSEGV),代码2,故障地址0x343a2944   java JPA存储库。findByAll()返回null,但数据库中存在所有内容   用于发送电子邮件的java Ant脚本   Java小程序HTML页面发生了奇怪的事情   在Postman的请求正文中传递多个JSON数据,并使用Jersy(JXRS)进入Java Rest API   无法强制转换java DAO类   10分钟后重新连接java   正则表达式如何在java中选择字符串直到某个字符   java我的输出有一些问题   Objective中的java时间段   java如何在新屏幕上基于按钮单击在webview中打开url   java哪个selenium版本与Firefox ESR 45.2.0兼容   java无法使用Apache Camel 3.1.0将XML转换为JSON