2P by neo 11달전 | favorite | 댓글 1개

JCJSON 변환기 요약

  • jc는 CLI 도구, 파일 타입, 일반 문자열의 출력을 JSON 형식으로 변환하여 스크립트에서 더 쉽게 파싱할 수 있게 함.
  • dig 명령어의 예시를 통해 JSON 형식으로 변환된 출력을 확인할 수 있으며, 이를 jqjello 같은 도구로 추가 처리 가능.
  • 파이썬 라이브러리로도 사용 가능하며, 이 경우 JSON 대신 파이썬 딕셔너리, 딕셔너리 리스트 또는 딕셔너리의 게으른 반복 가능 객체를 반환.

JCJSON 변환기 설치 방법

  • pip, OS 패키지 저장소, 바이너리 다운로드를 통해 설치 가능.
  • 다양한 리눅스 배포판, macOS, FreeBSD에서 사용 가능한 설치 명령어 제공.

JCJSON 변환기 사용 방법

  • STDIN에서 파이프된 입력을 받아 이전 명령어의 출력을 STDOUT으로 JSON 형식으로 출력.
  • "매직" 구문을 사용하여 명령어 앞에 jc를 붙여 변환하거나 /proc 파일 경로 앞에 사용 가능.
  • 다양한 파서 옵션과 슬라이스 기능을 통해 출력 포맷 조정 및 특정 라인 처리 가능.

JCJSON 변환기의 특징

  • 기본 및 원시 데이터 표현 제공, 스키마에 따라 알려진 숫자를 int/float JSON 값으로 변환.
  • --raw 옵션 또는 raw=True 파라미터를 사용하여 원시, 전처리된 JSON 접근 가능.
  • 스트리밍 파서를 통해 대량의 명령어 출력을 메모리 효율적으로 처리.

JCJSON 변환기의 중요성

  • 유닉스 철학을 21세기에 적용하려는 프로젝트의 동기와 사용 사례들을 블로그 포스트와 인터뷰에서 확인할 수 있음.
  • Bash 스크립팅, Ansible, Saltstack, Nornir, FortiSOAR 등 다양한 환경에서 명령어 출력 파싱에 유용.

JCJSON 변환기의 호환성

  • 일부 파서는 플랫폼에 구애받지 않고 작동하며, 플랫폼 특정 출력을 변환하는 파서는 호환성 경고 메시지를 생성할 수 있음.
  • 모든 파서 정보는 jc -ap를 실행하여 확인 가능.

JCJSON 변환기 기여 방법

  • 코드나 파서 추가/개선에 대한 기여 환영, jc/parsers/foo.py 또는 jc/parsers/foo_s.py를 템플릿으로 사용하여 풀 리퀘스트 제출 가능.

GN⁺의 의견

이 글에서 가장 중요한 것은 jc가 다양한 명령어, 파일 타입, 문자열의 출력을 JSON으로 변환하여 프로그래밍적으로 처리할 수 있게 해준다는 점이다. 이는 개발자들이 데이터를 더 쉽게 다룰 수 있게 하며, 특히 유닉스와 리눅스 환경에서 스크립팅을 할 때 유용하다. 이 글이 흥미로운 이유는 jc가 소프트웨어 개발과 시스템 관리에서의 자동화와 효율성을 크게 향상시킬 수 있는 도구이기 때문이다.

Hacker News 의견
  • FreeBSD에서 libxo 라이브러리를 사용하여 명령어 출력을 JSON 형식으로 변환하는 문제 해결

    • ls 명령어는 지원되었으나 제거된 사례 존재
    • 모든 유틸리티에서 지원되지 않음
    • PowerShell은 기본적으로 구조화된 출력 제공
    • Unix/Linux에서도 --json 플래그 표준화 필요성 제기
  • 유지보수의 어려움에 대한 우려 표현

    • 버전 관리, 명령어 플래그 변경 등 유지보수가 어려울 것으로 예상
    • --<CMD> 툴 사용법이 도움말/매뉴얼을 복잡하게 만들 수 있음
  • Nushell이라는 도구 소개

    • 쉘 자체로서 구조화된 데이터를 제공하는 접근 방식
  • CLI 도구들이 JSON 출력을 지원하는 것에 대한 긍정적인 평가

    • 실제로 JSON 형식이지만 복잡하거나 불필요한 경우가 많아 실용성에 의문
  • jc 도구의 사용법에 대한 의견

    • jc dig example.comdig example.com | jc --dig보다 나은 주 사용법이어야 함
  • PowerShell에서 모든 출력이 객체로 되어 있는 것에 대한 선호도 표현

    • Bash 스크립트 작성 시 해당 기능이 그리워짐
  • jc 도구 유지보수를 맡는 이에 대한 존경 표현

  • --json 옵션을 받아들이는 현대적인 유닉스 명령어 도구 목록에 대한 질문

    • 해당 정보를 저장소에 추가하는 것이 유용할 수 있음
  • 유닉스의 설계 결함에 대한 지적

    • 명령어 프로그램이 호출 프로그램에게 정수형 종료 코드만을 출력
    • GUI 프로그램이 명령어 프로그램을 호출할 때 제한적인 정보를 얻음
  • textfsm을 사용하지 않은 것에 대한 의외의 표현

    • 네트워크 장비의 CLI 출력을 파싱하는 데 textfsm이 널리 사용됨