2 puntos por GN⁺ 2023-12-10 | 1 comentarios | Compartir por WhatsApp

Resumen del convertidor JSON JC

  • jc convierte la salida de herramientas CLI, tipos de archivo y cadenas comunes al formato JSON para que sea más fácil de parsear en scripts.
  • Con el ejemplo del comando dig, se puede ver la salida convertida a formato JSON, y luego procesarla aún más con herramientas como jq o jello.
  • También puede usarse como biblioteca de Python; en ese caso, devuelve diccionarios de Python, listas de diccionarios u objetos iterables perezosos de diccionarios en lugar de JSON.

Cómo instalar el convertidor JSON JC

  • Se puede instalar mediante pip, repositorios de paquetes del sistema operativo o descarga de binarios.
  • Se proporcionan comandos de instalación para varias distribuciones de Linux, macOS y FreeBSD.

Cómo usar el convertidor JSON JC

  • Recibe entrada canalizada desde STDIN y emite en STDOUT la salida del comando anterior en formato JSON.
  • Se puede convertir usando la sintaxis "mágica" al anteponer jc al comando, o usarlo antes de una ruta de archivo de /proc.
  • Permite ajustar el formato de salida y procesar líneas específicas mediante varias opciones de parser y funciones de slicing.

Características del convertidor JSON JC

  • Ofrece representaciones de datos predeterminadas y sin procesar, y convierte los números conocidos en valores JSON int/float según el esquema.
  • Se puede acceder al JSON sin procesar y preprocesado con la opción --raw o el parámetro raw=True.
  • Los parsers en streaming permiten procesar grandes volúmenes de salida de comandos de forma eficiente en memoria.

Importancia del convertidor JSON JC

  • En publicaciones de blog y entrevistas se pueden conocer la motivación del proyecto y sus casos de uso para llevar la filosofía Unix al siglo XXI.
  • Es útil para parsear la salida de comandos en entornos como scripts de Bash, Ansible, Saltstack, Nornir y FortiSOAR.

Compatibilidad del convertidor JSON JC

  • Algunos parsers funcionan sin depender de la plataforma, mientras que los que convierten salidas específicas de una plataforma pueden generar mensajes de advertencia de compatibilidad.
  • Toda la información de los parsers puede consultarse ejecutando jc -ap.

Cómo contribuir al convertidor JSON JC

  • Se agradecen contribuciones de código o la adición/mejora de parsers; se puede enviar un pull request usando jc/parsers/foo.py o jc/parsers/foo_s.py como plantilla.

Opinión de GN⁺

Lo más importante de este texto es que jc convierte la salida de distintos comandos, tipos de archivo y cadenas a JSON para que pueda procesarse de forma programática. Esto permite a los desarrolladores manejar datos con mayor facilidad, especialmente al hacer scripting en entornos Unix y Linux. El motivo por el que este texto resulta interesante es que jc es una herramienta que puede mejorar mucho la automatización y la eficiencia en el desarrollo de software y la administración de sistemas.

1 comentarios

 
GN⁺ 2023-12-10
Opiniones en Hacker News
  • Se resolvió el problema de convertir la salida de comandos a formato JSON en FreeBSD usando la biblioteca libxo

    • El comando ls estaba soportado, pero hubo casos en que se eliminó
    • No está soportado en todas las utilidades
    • PowerShell ofrece salida estructurada de forma predeterminada
    • También se plantea la necesidad de estandarizar la bandera --json en Unix/Linux
  • Se expresan preocupaciones sobre la dificultad del mantenimiento

    • Se espera que el mantenimiento sea difícil por el versionado, cambios en las banderas de comandos, etc.
    • El uso de la herramienta --<CMD> podría hacer más compleja la ayuda/el manual
  • Se presenta una herramienta llamada Nushell

    • Un enfoque que ofrece datos estructurados desde el propio shell
  • Evaluación positiva de que las herramientas CLI soporten salida JSON

    • En la práctica, muchas veces sí es JSON, pero complejo o innecesario, por lo que se cuestiona su utilidad
  • Opinión sobre el uso de la herramienta jc

    • jc dig example.com debería ser el modo principal de uso, mejor que dig example.com | jc --dig
  • Se expresa preferencia por que toda la salida en PowerShell sea en forma de objetos

    • Se extraña esa función al escribir scripts en Bash
  • Se expresa respeto por quien se encarga del mantenimiento de la herramienta jc

  • Pregunta sobre una lista de herramientas modernas de comandos Unix que acepten la opción --json

    • Podría ser útil agregar esa información al repositorio
  • Señalamiento de un defecto de diseño de Unix

    • Los programas de comandos solo entregan al programa que los invoca un código de salida entero
    • Cuando un programa GUI invoca un programa de comandos, obtiene información limitada
  • Sorpresa por no haber usado textfsm

    • textfsm se usa ampliamente para parsear la salida CLI de equipos de red