解析hive

时间:2017-07-11 19:23:39

标签: json parsing limesurvey

我需要每5分钟自动将新案例(TheHive-Project)移至LimeSurvey。我已经找到了API脚本的基础来添加对LimeSurvey的响应。但是,我无法弄清楚如何只添加新案例,以及如何解析Hive案例数据以获取我想要添加的信息。

到目前为止,我一直在使用curl从hive获取一个案例列表。以下是命令和输出。

curl -su user:pass http://myhiveIPaddress:9000/api/case
  

[{ “createdBy”: “查理”, “所有者”: “查理”, “createdAt”:1498749369897 “的startDate”:1498749300000, “标题”: “测试”, “caseId”:1, “用户” : “查理”, “状态”: “打开”, “说明”: “TESTTEST”, “TLP”:2, “标签”:[], “标志”:假 “严重性”:1, “指标”: {“召集处理人员提醒的时间”:2,“从开放到结束的时间”:4,“从妥协到发现的时间”:6},“updatedBy”:“charlie”,“updatedAt”:1498751817577,“id” : “AVz0bH7yqaVU6WeZlx3w”, “_类型”: “的情况下”},{ “createdBy”: “查理”, “所有者”: “查理”, “标题”: “TESTTEST”, “caseId”:3 “描述”:” DDD”, “用户”: “查理”, “状态”: “打开”, “createdAt”:1499446483328 “的startDate”:1499446440000, “严重性”:2 “TLP”:2, “标签”:[], “标志”:假, “ID”: “AV0d-Z0DqHSVxnJ8z_HI”, “_类型”: “的情况下”},{ “createdBy”: “查理”, “所有者”: “查理”, “createdAt”:1499268177619,“标题“:”test test“,”user“:”charlie“,”status“:”Open“,”caseId“:2,”startDate“:1499268120000,”tlp“:2,”tags“:[],”flag“ “:false,”description“:”s“,”severity“:1,”metrics“:{”从打开到关闭的时间“:2,”警报到处理程序取件的时间“:3,”时间到了m妥协发现“:null},”updatedBy“:”charlie“,”updatedAt“:1499268203235,”id“:”AV0TWOIinKQtYP_yBYgG“,”_ type“:”case“}]

每个字段由分隔符},{

分隔

关于从每个案例中解析出特定信息,我之前尝试过使用cut命令。这一直有效,直到我达到“指标”;它并不总是适用于指标,因为它们并不总是以相同的顺序列出。

我已经向老板寻求帮助了,他告诉我这个命令可能会让我朝着正确的方向前进,只为调查添加新的蜂巢案例,但我仍然非常迷失,并希望避免再次提出太多要求

curl -su user:pass http://myhiveIPaddress:9000/api/case | sed 's/},{/\n/g' | sed 's/\[{//g' | sed 's/}]//g' | awk -F '"caseId":' {'print $2'} | cut -f 1 -d , | sort -n | while read line; do echo '"caseId":'$line; done

基本上,我在方式过头,觉得我不知道自己在做什么。如果我需要澄清任何内容,或者如果有助于我在API脚本中发布到目前为止的内容,请告诉我。

<小时/> 的更新
这是我想写的脚本的潜在逻辑。

  

获取蜂巢案例清单(卷曲......)
  读取每个字段,由},{
分隔   在读取每个字段时,检查/ tmp / addedHiveCases以查看字段的caseId是否已存在    - &GT;如果文件中不存在,请将case添加到limesurvey并将caseId添加到/ tmp / addedHiveCases
   - &GT;如果确实存在,请跳至下一个字段

1 个答案:

答案 0 :(得分:0)

为什么你认为字段用“},{”分隔符?

分隔

/api/case API的响应是一种有效的JSON格式,列出了案例。

您可以使用Python脚本来使用API​​吗?如果是,我可以帮助您编写所需的脚本。