2017-07-11 14 views
2

新しいケース(TheHive-Project)を5分ごとに自動的にLimeSurveyに移動する必要があります。私はLimeSurveyに応答を追加するAPIスクリプトの基礎を理解しました。ただし、新しいケースだけを追加する方法と、追加したい情報のハイブケースデータを解析する方法を理解することはできません。ハイブ用のjson出力の解析

これまで、ハイブから症例のリストを取得するためにカールを使用してきました。以下はコマンドと出力です。

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

[{ "CREATEDBY": "チャーリー"、 "所有者": "チャーリー"、 "createdAt":1498749369897、 "たstartDate":14987.493億、 "タイトル": "テスト"、 "caseId" 1、 "user": "charlie"、 "status": "Open"、 "description": "testtest"、 "tlp":2、 "tags":[]、 "flag":false、 "severity" 1、 "メトリック":{"アラートからハンドラへのピックアップ時間":2、 "オープンからクローズまでの時間":4、 "妥協から発見までの時間":6}、 "updatedBy": "charlie"、 "updatedAt" :1498751817577、 "id": "AVz0bH7yqaVU6WeZlx3w"、 "_ type": "case"}、{"createdBy": "charlie"、 "owner": "charlie"、 "title": "testtest"、 "caseId":3 "description": "ddd"、 "user": "charlie"、 "status": "オープン"、 "createdAt":1499446483328、 "startDate":1499446440000、 "severity":2、 "tlp":2、タグ ":[]、"フラグ ":偽、" id ":" AV0d-Z0DqHSVxnJ8z_HI "、" _ type ":" case "}、{" createdBy ":" charlie "、" owner ":" charlie "、" createdAt ":1499268177619、" title ":"テストテスト "、" user ":" charlie "、" status ":" open "、" caseId ":2、" startDate ":1499268120000、 1、 "metrics":{"オープンからクローズまでの時間":2、 "Time for open"、 "tlp":2、 "tags":[ Already to Handler Pickup ":3、"妥協から発見までの時間 ":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スクリプトで投稿した内容を投稿するのに役立つ場合は、教えてください。


更新
ここに、私が書きたいスクリプトの潜在的なロジックを示します。フィールドのcaseId既に
が存在するかどうかを/ tmp/addedHiveCasesを、各フィールドを読み取る確認しながら、ハイブケース

ゲットリスト(カール...)
はで区切られた各フィールド、}、{
を読み取ります - >それはファイルに存在しない場合は、/ tmpに/ addedHiveCasesにcaseIdをLimeSurveyのと追加するためにケースを追加
- >が存在しない場合は、次のフィールドにスキップ

+0

希望するスクリプトの擬似コードを追加しました。誰かが助けることができれば、それは非常に高く評価されるでしょう。 – charlielaw100

答えて

0

なぜあなたはフィールドことを考えています"}、{"デリミタ?

/api/case APIの応答は、ケースをリストする有効なJSON形式です。

Pythonスクリプトを使用してAPIで遊ぶことはできますか?はいの場合は、必要なスクリプトを書くのを手伝うことができます。

+0

私はlimesurveyへの応答を追加するために書いた基本スクリプトはPHPで書かれていますが、私は得ることができるすべての助けを借ります。どういう意味ですか?彼らは "}、{"で区切られていませんか?最初のフィールドは_... "case"}、_で終わり、2番目のフィールドは_ {"createdBy":... _で始まります。お返事をありがとうございます! – charlielaw100

+0

はい、コンテンツはJSON形式です:コンマで区切られたキーと値のペアのリスト。 JSONライブラリを使用して、PHPを使用してその応答を解析することができます。 – nadouani

+0

TheHive4py(Pythonライブラリ)というライブラリがあり、TheHive APIで遊ぶのに役立つことに注意してください。 – nadouani

関連する問題