Créer et afficher un un fichier JSON en bash
Bonjour,
Je suis en train de faire un exercice dans lequel je dois écrire un script bash pour vérifier si mon client utilise bien le service NTP de mon serveur debian.
Le problème, c'est que je dois afficher le résultat au format JSON, or créer un ficher json quelque chose que j'ai jamais fait.
Voici mon script :
Merci de m'aider
Je suis en train de faire un exercice dans lequel je dois écrire un script bash pour vérifier si mon client utilise bien le service NTP de mon serveur debian.
Le problème, c'est que je dois afficher le résultat au format JSON, or créer un ficher json quelque chose que j'ai jamais fait.
Voici mon script :
#! /bin/bash declare -A critere critere[NtpRemote,valeur]=192.168.10.254 critere[NtpRemote,ponderation]=20 remotecheck=false ponderationtotal=0 #echo ${critere[NtpRemote,valeur]} #echo ${!critere[@]} for c in ${!critere[@]} do if [ $c = "NtpRemote,valeur" ] then remote=$(ntpq -pn | grep 192.168.10.254 | cut -c 2-15) if [ ${critere[$c]} = $remote ] then echo "Remote = GOOD" remotecheck=true ponderationtotal=$(expr ${ponderationtotal} + ${critere[NtpRemote,ponderation]}) fi fi done echo "PONDERATION = ${ponderationtotal}" | jq -R -S 'split("\n") | {Question: 2{REMOTE: ${remotecheck}}}' q2.json
Merci de m'aider
A voir également:
- Créer un fichier bash
- Fichier bin - Guide
- Creer un fichier .bat - Guide
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Comment réduire la taille d'un fichier - Guide
1 réponse
Bonjour,
En soi, générer un fichier json n'est pas plus compliqué qu'un fichier texte, il suffit d'obéir aux contraintes imposées par ce format :
Il faut donc réfléchir à comment tu veux organiser les résultats de ton script. As-tu besoin d'une liste, d'un dictionnaire, quelles informations tu veux véhiculer, etc, il n'y a que toi pour nous le dire.
Si on se réfère à cette page, j'imagine que tu veux renvoyer les résultats de cette commande (un texte organisé sous forme de tableau) au format json. Il faut donc que ton script bash soit capable d'itérer sur chaque ligne et chaque case de ce tableau et génère la liste en conséquence.
Est-ce conforme aux résultats que tu obtiens ?
Ça s'écrit facilement en python mais en bash c'est beaucoup plus pénible, donc avant d'aller plus avant, est-ce que le langage de script est imposé ?
Bonne chance
En soi, générer un fichier json n'est pas plus compliqué qu'un fichier texte, il suffit d'obéir aux contraintes imposées par ce format :
- Les dictionnaires (ensemble de paires clés valeurs) sont déclarées sous la forme
{cle1 : valeur1, cle2 : valeur 2 ...}
; - Les listes (séquence de valeurs) sont déclarées sous la forme
[valeur1, valeur2, ...]
; - les types supportés sont (voir ce lien) :
- string
- number (= flottant)
- integer
- object (= dictionnaires)
- array (= listes)
- boolean
- null
- Tu es libre d'indenter le fichier JSON à ton idée
- Il n'y a pas de commentaires en JSON ;.
Il faut donc réfléchir à comment tu veux organiser les résultats de ton script. As-tu besoin d'une liste, d'un dictionnaire, quelles informations tu veux véhiculer, etc, il n'y a que toi pour nous le dire.
Si on se réfère à cette page, j'imagine que tu veux renvoyer les résultats de cette commande (un texte organisé sous forme de tableau) au format json. Il faut donc que ton script bash soit capable d'itérer sur chaque ligne et chaque case de ce tableau et génère la liste en conséquence.
remote refid st t when poll reach delay offset jitter
==============================================================================
dione.cbane.org 204.123.2.5 2 u 509 1024 377 51.661 -3.343 0.279
ns1.your-site.c 132.236.56.252 3 u 899 1024 377 48.395 2.047 1.006
ntp.yoinks.net 129.7.1.66 2 u 930 1024 377 0.693 1.035 0.241
LOCAL(0) .LOCL. 10 l 45 64 377 0.000 0.000 0.001
Est-ce conforme aux résultats que tu obtiens ?
Ça s'écrit facilement en python mais en bash c'est beaucoup plus pénible, donc avant d'aller plus avant, est-ce que le langage de script est imposé ?
Bonne chance