2 pontos por GN⁺ 2023-12-10 | 1 comentários | Compartilhar no WhatsApp

Resumo do conversor JSON JC

  • jc converte a saída de ferramentas CLI, tipos de arquivo e strings comuns para o formato JSON, facilitando o parsing em scripts.
  • É possível ver a saída convertida para JSON por meio de um exemplo com o comando dig, e depois processá-la ainda mais com ferramentas como jq ou jello.
  • Também pode ser usado como biblioteca Python; nesse caso, em vez de JSON, retorna dicionários Python, listas de dicionários ou objetos iteráveis preguiçosos de dicionários.

Como instalar o conversor JSON JC

  • Pode ser instalado via pip, repositórios de pacotes do sistema operacional ou download de binários.
  • São fornecidos comandos de instalação para várias distribuições Linux, macOS e FreeBSD.

Como usar o conversor JSON JC

  • Recebe entrada enviada por pipe via STDIN e imprime em STDOUT a saída do comando anterior em formato JSON.
  • É possível usar a sintaxe “mágica”, adicionando jc antes do comando para fazer a conversão, ou antes de caminhos de arquivos em /proc.
  • Também permite ajustar o formato de saída e processar linhas específicas por meio de várias opções de parser e recursos de slicing.

Características do conversor JSON JC

  • Oferece representações de dados padrão e brutas, convertendo números conhecidos em valores JSON int/float conforme o schema.
  • Com a opção --raw ou o parâmetro raw=True, é possível acessar JSON bruto e pré-processado.
  • Parsers em streaming permitem tratar grandes volumes de saída de comandos com eficiência de memória.

Por que o conversor JSON JC é importante

  • A motivação do projeto, que busca aplicar a filosofia Unix ao século XXI, e seus casos de uso podem ser vistos em posts de blog e entrevistas.
  • É útil para fazer parsing da saída de comandos em ambientes diversos, como scripts Bash, Ansible, Saltstack, Nornir e FortiSOAR.

Compatibilidade do conversor JSON JC

  • Alguns parsers funcionam independentemente da plataforma, enquanto parsers que convertem saídas específicas de plataforma podem gerar mensagens de aviso de compatibilidade.
  • É possível consultar todas as informações dos parsers executando jc -ap.

Como contribuir com o conversor JSON JC

  • Contribuições com código ou adição/melhoria de parsers são bem-vindas; é possível usar jc/parsers/foo.py ou jc/parsers/foo_s.py como template para enviar um pull request.

Opinião do GN⁺

O ponto mais importante deste texto é que o jc converte a saída de vários comandos, tipos de arquivo e strings em JSON, permitindo tratá-los de forma programática. Isso ajuda desenvolvedores a lidar com dados com mais facilidade, especialmente ao fazer scripts em ambientes Unix e Linux. O texto é interessante porque o jc é uma ferramenta que pode melhorar bastante a automação e a eficiência no desenvolvimento de software e na administração de sistemas.

1 comentários

 
GN⁺ 2023-12-10
Comentários no Hacker News
  • No FreeBSD, o problema foi resolvido usando a biblioteca libxo para converter a saída de comandos em formato JSON

    • O comando ls era suportado, mas houve casos em que isso foi removido
    • Não há suporte em todos os utilitários
    • O PowerShell fornece saída estruturada por padrão
    • Foi levantada a necessidade de padronizar a flag --json também em Unix/Linux
  • Preocupação expressa com a dificuldade de manutenção

    • Controle de versões, mudanças nas flags dos comandos etc. provavelmente tornariam a manutenção difícil
    • O uso da ferramenta --<CMD> pode tornar a ajuda/manuais mais complexos
  • Apresentação da ferramenta chamada Nushell

    • Uma abordagem em que o próprio shell fornece dados estruturados
  • Avaliação positiva sobre ferramentas de CLI suportarem saída em JSON

    • Na prática, muitas vezes é JSON, mas complexo ou desnecessário, o que levanta dúvidas sobre sua utilidade
  • Opinião sobre a forma de usar a ferramenta jc

    • jc dig example.com deveria ser a principal forma de uso, melhor do que dig example.com | jc --dig
  • Expressão de preferência pelo fato de toda saída no PowerShell ser composta por objetos

    • Esse recurso faz falta ao escrever scripts em Bash
  • Expressão de respeito por quem assume a manutenção da ferramenta jc

  • Pergunta sobre uma lista de ferramentas modernas de comando Unix que aceitam a opção --json

    • Pode ser útil adicionar essa informação ao repositório
  • Apontamento de uma falha de projeto no Unix

    • Programas de linha de comando só retornam um código de saída inteiro ao programa chamador
    • Quando programas GUI chamam programas de linha de comando, obtêm informações limitadas
  • Surpresa por não terem usado textfsm

    • textfsm é amplamente usado para analisar a saída de CLI de equipamentos de rede