在python中获取Gerrit SSH输出



所以我正在使用plumbum对gerrit执行ssh命令,但我似乎无法将输出作为json字典。

eg: ssh abc.xyz.com gerrit query --patch-sets --format=json commit:12345678

此操作的输出还会转储以下行: 类型: ABCD 行计数:整数 运行时间毫秒: 123 更多变化: ABCD

我觉得这也是另一本字典。

那么,有没有办法将 ssh 命令的输出拉入 python 字典?

参考: https://review.openstack.org/Documentation/cmd-query.html

查询结果可能会返回多个更改,每个更改都将位于单独的行上,用换行符分隔。 结果的最后一行是摘要,其中包括有关是否有更多结果的提示(超出服务器端或查询上的limit选项设置的限制(。

在您的情况下,您正在查询单个提交 sha1,因此您只得到一个结果,但它仍然包含摘要行。

应该可以通过在换行符上拆分输出并分别转换每一行来将结果转换为字典,例如:

import json
data = ssh["abc.xyz.com",
"gerrit",
"query",
"--patch-sets",
"--format=JSON",
"commit:",
"12345678"]()
data2 = json.loads(data.split()[0])

要获得JSON格式的答案,您需要将"--format=text"选项更改为"--format=json":

ssh abc.xyz.com gerrit query --patch-sets --format=json commit:12345678

以下是我让它工作的方式:

data = ssh["abc.xyz.com",
"gerrit",
"query",
"--patch-sets",
"--format=JSON",
"commit:",
"12345678"]()
data2 = data[:data.rfind('{')]

有没有更好的解决方案?

最新更新