使用命令行(ssh)对Gerrit进行查询, 官方地址:https://review.openstack.org/Documentation/cmd-query.html

程序例子

import os, json

def get_patch_info(GERRIT_HOME, patch_id):
cmd_str='ssh %s gerrit query --format=JSON --comments change:%d'%(GERRIT_HOME, patch_id)
process = os.popen(cmd_str)
output = process.readlines()[0] # 参见说明
process.close()
jsn_data = json.loads(output) # 返回的是dict
return jsn_data

说明:查询结果永远会多返回一行查询统计的信息在最后一行, 即使查询结果是空:
{"moreChanges": false,"runTimeMilliseconds": 80,"rowCount": 1,"type": "stats"}

如果用shell,可以使用 jq 做解析。jq 能够对 json 结果进行格式化和挑选。

安装 sudo apt-get install jq

ssh review.example.com gerrit query --format=JSON --patch-sets --files change:89535 | jq . > 89535-pretty.txt

ssh review.example.com gerrit query --format=JSON --patch-sets --files change:89535 > 89535-pretty.txt

cat 89535-pretty.txt | jq .

cat 89535-pretty.txt | jq ".status" # 取出该 patch 的 status

cat 89535-pretty.txt | jq ".patchSets[0].files" # 取出第一个patchSet 修改的文件信息

cat 89535-pretty.txt | jq "keys" # 列出所有key

cat 89535-pretty.txt | jq "has('owner')" # 是否存在该key

以下转自:http://blog.chinaunix.net/uid-24774106-id-3830242.html

与JSON相关的我就暂时介绍到这里,希望进一步了解jq并使用的可以去http://stedolan.github.io/jq/manual/,希望了解源码实现的,可以去https://github.com/stedolan/jq,意料之中的事情是 作者用来flex和bison来parse json。

我们的示例JSON来自参考文献第一篇。

用google搜索,kernalpanic中有篇文章介绍了jshon和json.sh提供了另外的思路。

参考文献:
How to parse JSON string via command line on Linuxjq - command-line JSON processor

使用 ssh 从 Gerrit 获取 patch 信息的更多相关文章

  1. 批量ssh登录,获取操作系统、CPU、内存、硬盘信息<shell>

    说明:该脚本读取machine.txt文件中的机器名,然后批量ssh登录,获取每台机器的操作系统,CPU,内存,硬盘等信息. 使用方法:将文件保存为sh,chmod +x filename 为该sh文 ...

  2. (部署新java程序,程序报错,需copy的一个包)——java使用siger 获取服务器硬件信息

    mcat-siger.sh  查看是否安装siger rsync -aPuv /usr/lib64/libsigar-amd64-linux.so $i:/usr/lib64/ java使用siger ...

  3. 广州商学院Python正方教务系统爬虫(获取个人信息成绩课表修改密码)

    使用python的requests库简单爬取,使用xpath解析内容 可以获取个人信息.个人照片.成绩单和课表 github地址:https://github.com/PythonerKK/GZCC- ...

  4. android 获取IMSI信息(判断是移动,联通,电信手机卡)

    首先我们需要知道手机IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信.那么第一步就是先获取手机IMSI号码:代码如下 /** *获取IMSI信息 * ...

  5. FastDFS 通过文件名获取文件信息

    /** * 获取文件信息 * * param string group_name 文件所在的组名 * param string file_id 文件id(如: M00/09/BE/rBBZolgj6O ...

  6. Android获取位置信息的方法总结

    1.位置服务的简介:位置服务,英文翻译为Location-Based Services,缩写为LBS,又称为定位服务或基于位置的服务,融合了GPS定位.移动通信.导航等多种技术,提供与空间位置相关的综 ...

  7. tp框架获取常量信息、方法、命名空间

    获取系统常量信息: public function ShowInFo() { var_dump(get_defined_constants(true)); //如果参数为true,则分类显示 } 在这 ...

  8. ios获取设备信息总结

    1.获取设备的信息 UIDevice *device = [[UIDevice alloc] int]; NSString *name = device.name;       //获取设备所有者的名 ...

  9. JS根据经纬度获取地址信息

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

随机推荐

  1. PAT L3-001. 凑零钱

    $01$背包,路径记录,贪心. 可以将物品从大到小排序之后进行背包,同时记录路径. #include<map> #include<set> #include<ctime& ...

  2. zookeeper,hadoop安装部署其实与防火墙无关

    网上查看了很多人关于hadoop,zookeeper的文章,大多都把关闭防火墙作为首要前提,个人觉得这大可不必. 首先你需要知道你部署的是什么东西,它需要哪些端口即可.把相关端口打开就可以了啊.然后把 ...

  3. 并发系列2-大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?【石杉的架构笔记】

  4. leetcode7 Rerver Integer

    题意:数字反转 思路:醉了,提交了好几次,难点不在于怎么反转,而是判断是否益处,原题中给的是int,4个字节,32位,开始不知道怎么判断.现在知道了是limits.h中的INT_MIN和INT_MAX ...

  5. BZOJ 1700 [Usaco2007 Jan]Problem Solving 解题(单调DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1700 [题目大意] 共有p道题目要做,每个月收入只有n元,用于付钱做题之外的部分都会吃 ...

  6. 【NTT】hdu1402 A * B Problem Plus

    r·2^k+1 r k g 3 1 1 2 5 1 2 2 17 1 4 3 97 3 5 5 193 3 6 5 257 1 8 3 7681 15 9 17 12289 3 12 11 40961 ...

  7. 1.3(SQL学习笔记)计算字段及函数

    一.计算字段 1.1拼接字段 一般情况下返回的字段是指定列的属性名.如果有时我们对返回格式有特殊要求. 例如,我们需要将显示商品名,即商品价格,同时商品名后面的价格放在括号内. prod_name(p ...

  8. Activity(活动)生命周期--系统回收活动数据存储

    当一个活动进入停止状态的时候,是有可能被系统回收的.那如果处于停止状态的活动被系统回收了,而它上面却有我们所需要数据该如何保存呢?(类似于:打开qq进入下一个界面没有进去,返回的时候仍然不需要你输入账 ...

  9. [BZOJ1001](BeiJingOI 2006)狼抓兔子

    Description   Source: Beijing2006 [BJOI2006] 八中OJ上本题链接:http://www.lydsy.com/JudgeOnline/problem.php? ...

  10. Trie 图

    时间限制:20000ms 单点时限:1000ms 内存限制:512MB 描述 前情回顾 上回说到,小Hi和小Ho接受到了河蟹先生伟大而光荣的任务:河蟹先生将要给与他们一篇从互联网上收集来的文章,和一本 ...