Convertir la sortie d'une commande au format JSON
Si vous codez ou que vous faites de la ligne de commande et que vous avez besoin de récupérer la sortie d’un outil en ligne de commande ou de fichiers type XML and co et d’exporter tout ça en JSON ou dictionnaires pour Python, j’ai ce qu’il vous faut.
Ça s’appelle JC et c’est dispo sous la forme d’un outil en ligne de commande ou d’une lib Python. Vous pouvez ainsi rediriger avec un pipe la sortie d’une commande vers JC comme ceci en précisant le parseur dig (Il y a pleins de parseurs disponibles) :
dig example.com | jc --dig
Et ainsi obtenir ça :
[{"id":38052,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,"opt_pseudosection":{"edns":{"version":0,"flags":[],"udp":4096}},"question":{"name":"example.com.","class":"IN","type":"A"},"answer":[{"name":"example.com.","class":"IN","type":"A","ttl":39049,"data":"93.184.216.34"}],"query_time":49,"server":"2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)","when":"Fri Apr 16 16:09:00 PDT 2021","rcvd":56,"when_epoch":1618614540,"when_epoch_utc":null}]
Si vous vous sentez pousser des ailes, vous pouvez même l’enchainer avec la commande jq comme ceci pour récupérer simplement une info :
dig example.com | jc --dig | jq -r '.[].answer[].data'
Très pratique pour récupérer de la data dans vos scripts Pythons ou sortir cette donnée en JSON pour ensuite l’importer ailleurs. Avec ça vous pourrez parser des commandes comme crontab, ls, free, mount, hosts, ping, ps, systemctl, tracerout ou des formats de fichiers comme le CSV, XML, YAML…etc.
Il y a même une démo en ligne si vous voulez tester avec d’installer.
Si ça vous intéresse, le dépôt Github est ici.
Merci à l__l_l_l__ pour le partage.