J'ai besoin de déplacer automatiquement les nouveaux cas (TheHive-Project) vers LimeSurvey toutes les 5 minutes. J'ai compris la base de l'API script pour ajouter des réponses à LimeSurvey. Cependant, je n'arrive pas à comprendre comment ajouter seulement les nouveaux cas, et comment analyser les données des cas Hive pour les informations que je veux ajouter.
Jusqu'à présent, j'ai utilisé curl pour obtenir une liste de cas à partir de hive. Voici la commande et la sortie.
curl -su user:pass http://myhiveIPaddress:9000/api/case
[{"createdBy":"charlie","owner":"charlie","createdAt":1498749369897,"startDate":1498749300000,"title":"test","caseId":1,"user": "charlie", "status" : "Open", "description" : "testtest", "tlp" : 2, "tags" :[], "flag" : false, "severity" : 1, "metrics" : {"Time for Alert to Handler Pickup" : 2, "Temps entre l'ouverture et la fermeture":4, "Temps entre la compromission et la découverte":6}, "updatedBy" : "charlie", "updatedAt":1498751817577, "id" : "AVz0bH7yqaVU6WeZlx3w","_type" : "case"},{"createdBy" : "charlie", "owner" : "charlie", "title" : "testtest", "caseId":3, "description" : "ddd", "user" : "charlie", "status" : "Open", "createdAt" : 1499446483328,"startDate":1499446440000,"severity":2,"tlp":2,"tags":[],"flag":false,"id":"AV0d-Z0DqHSVxnJ8z_HI","_type":"case"},{"createdBy": "charlie","owner":"charlie","createdAt":1499268177619,"title":"test test","user":"charlie","status":"Open","caseId":2,"startDate": 1499268120000, "tlp":2, "tags" :[], "flag":false, "description" : "s", "severity":1, "metrics":{"Time from open to close":2, "Time for Alert to Handler Pickup" : 3, "Temps entre la compromission et la découverte":null}, "updatedBy" : "charlie", "updatedAt":1499268203235, "id" : "AV0TWOIinKQtYP_yBYgG","_type" : "case"}]
Chaque champ est séparé par le délimiteur },{ .
En ce qui concerne l'extraction d'informations spécifiques à chaque cas, j'ai déjà essayé d'utiliser la commande "cut". Cela a fonctionné jusqu'à ce que j'atteigne "metrics" ; cela ne fonctionne pas toujours pour les métriques parce qu'elles ne sont pas toujours listées dans le même ordre.
J'ai demandé de l'aide à mon patron, qui m'a dit que cette commande pourrait me permettre d'aller dans la bonne direction en n'ajoutant que les nouveaux cas de ruches à l'enquête, mais je suis encore très perdue et je veux éviter de demander trop de choses à nouveau.
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
En fait, je suis en manière J'ai l'impression de n'avoir aucune idée de ce que je fais. Si j'ai besoin de clarifier quoi que ce soit, ou si cela m'aiderait de poster ce que j'ai fait jusqu'à présent dans mon API script, merci de me le faire savoir.
Mise à jour
Voici la logique potentielle du script que j'aimerais écrire.
obtenir la liste des cas de ruche (curl ...)
lire chaque champ, délimité par },{
pendant la lecture de chaque champ, vérifier /tmp/addedHiveCases pour voir si le caseId du champ existe déjà
--> s'il n'existe pas dans le fichier, ajouter le cas à limesurvey et ajouter le caseId à /tmp/addedHiveCases
--> s'il existe, passer au champ suivant