Bonjour,
Je suis actuellement stagiaire dans une entreprise et il m'est demandé de réaliser un script shell (Ou alors python ou perl) qui réponde aux exigences suivantes :
Je récupère un fichier à partir d'une URL.
Ce fichier est au format JSON et je dois le parser pour récupérer uniquement les champs qui m'intéressent. ("Nom d'un module" et "Valeur du module")
Je dois ensuite comparer la valeur, pour chaque module, à celle définie dans un autre fichier et remonter des erreurs à un logiciel de supervision si la valeur d'un module ne correspond pas à celle contenue dans le fichier de configuration.
Ce que je sais faire actuellement, c'est la récupération du fichier JSON et la création d'un autre fichier contenant les informations qui m'intéressent :
Le fichier devices ressemble à ça au départ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 wget --http-user=admin --http-password=admin 192.168.1.38/api/devices awk -F"[,:]" '{ for(i=1;i<=NF;i++) { for(j=i;j<=NF;j++) { #Je recherche les champs "name" et "value" dans mon fichier if($i~/name/ && $j~/value/) { print "{"$i":"$(i+1)","$j":"$(j+1)"}," > "fichier" } } } }' devices
http://pastebin.com/pCACXgrs
Et le fichier que je génère, nommé "fichier" dans le code, ressemble à ça :
Etc ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 {"name":"Temp 1","value":"22.7"}, {"name":"Humi 1","value":"65"}, {"name":"6a porte principale","value":"1"}, {"name":"6a porte arriere","value":"1"}, {"name":"6b porte principale","value":"0"}, {"name":"6b porte arriere","value":"1"},
J'ai même réussi à re-créer la structure d'un fichier JSON, en sortie, pour peut être mieux le manipuler par la suite.
Quoiqu'il en soit, je ne vois pas comment réussir à comparer la valeur numérique de ce fichier à celui de configuration qui ressemblerait à ça :
Avez vous des idées ? Est-ce possible de manière simple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 {"name":"Temp 1","value_ref_min":"20","value_ref_max":"25"}, {"name":"Humi 1","value_ref_min":"50","value_ref_max":"70"}, {"name":"6a porte principale","value_ref_min":"0","value_ref_max":"0"}, {"name":"6a porte arriere","value_ref_min":"0","value_ref_max":"0"}, {"name":"6b porte principale","value_ref_min":"0","value_ref_max":"0"}, {"name":"6b porte arriere","value_ref_min":"0","value_ref_max":"0"},
Cordialement,
Partager