2 điểm bởi GN⁺ 2023-12-10 | 1 bình luận | Chia sẻ qua WhatsApp

Tóm tắt về bộ chuyển đổi JSON JC

  • jc chuyển đầu ra của các công cụ CLI, kiểu tệp và chuỗi văn bản thông thường sang định dạng JSON để có thể phân tích cú pháp dễ dàng hơn trong script.
  • Có thể xem đầu ra đã được chuyển sang JSON thông qua ví dụ với lệnh dig, và tiếp tục xử lý bằng các công cụ như jq hoặc jello.
  • Cũng có thể dùng như một thư viện Python; trong trường hợp này, thay vì JSON, nó trả về dictionary Python, danh sách dictionary hoặc đối tượng iterable lười của các dictionary.

Cách cài đặt bộ chuyển đổi JSON JC

  • Có thể cài đặt qua pip, kho gói của hệ điều hành hoặc tải binary.
  • Cung cấp các lệnh cài đặt dùng được trên nhiều bản phân phối Linux, macOS và FreeBSD.

Cách sử dụng bộ chuyển đổi JSON JC

  • Nhận đầu vào được pipe từ STDIN và xuất đầu ra của lệnh trước đó ra STDOUT dưới dạng JSON.
  • Có thể dùng cú pháp "magic" bằng cách thêm jc trước lệnh để chuyển đổi, hoặc dùng trước đường dẫn tệp /proc.
  • Có thể điều chỉnh định dạng đầu ra và xử lý các dòng cụ thể thông qua nhiều tùy chọn parser và tính năng slice.

Các đặc điểm của bộ chuyển đổi JSON JC

  • Cung cấp biểu diễn dữ liệu mặc định và thô, đồng thời chuyển các số đã biết theo schema thành giá trị JSON int/float.
  • Có thể truy cập JSON thô đã tiền xử lý bằng tùy chọn --raw hoặc tham số raw=True.
  • Trình phân tích cú pháp streaming giúp xử lý đầu ra lệnh lớn theo cách tiết kiệm bộ nhớ.

Tầm quan trọng của bộ chuyển đổi JSON JC

  • Có thể tìm thấy động lực của dự án nhằm áp dụng triết lý Unix vào thế kỷ 21 cùng các trường hợp sử dụng trong bài blog và bài phỏng vấn.
  • Hữu ích cho việc phân tích đầu ra lệnh trong nhiều môi trường như Bash scripting, Ansible, Saltstack, Nornir và FortiSOAR.

Khả năng tương thích của bộ chuyển đổi JSON JC

  • Một số parser hoạt động không phụ thuộc nền tảng; các parser chuyển đổi đầu ra đặc thù theo nền tảng có thể tạo thông báo cảnh báo tương thích.
  • Có thể xem toàn bộ thông tin parser bằng cách chạy jc -ap.

Cách đóng góp cho bộ chuyển đổi JSON JC

  • Hoan nghênh đóng góp về mã nguồn hoặc việc bổ sung/cải tiến parser; có thể dùng jc/parsers/foo.py hoặc jc/parsers/foo_s.py làm mẫu để gửi pull request.

Ý kiến của GN⁺

Điều quan trọng nhất trong bài viết này là jc có thể chuyển đầu ra của nhiều lệnh, kiểu tệp và chuỗi sang JSON để có thể xử lý bằng lập trình. Điều này giúp các nhà phát triển làm việc với dữ liệu dễ dàng hơn, đặc biệt hữu ích khi viết script trong môi trường Unix và Linux. Bài viết trở nên thú vị vì jc là công cụ có thể cải thiện đáng kể khả năng tự động hóa và hiệu quả trong phát triển phần mềm cũng như quản trị hệ thống.

1 bình luận

 
GN⁺ 2023-12-10
Ý kiến trên Hacker News
  • Giải quyết vấn đề chuyển đầu ra lệnh sang định dạng JSON trên FreeBSD bằng thư viện libxo

    • Lệnh ls từng được hỗ trợ nhưng có trường hợp đã bị loại bỏ
    • Không được hỗ trợ trên mọi tiện ích
    • PowerShell mặc định cung cấp đầu ra có cấu trúc
    • Nêu ra nhu cầu chuẩn hóa cờ --json trên Unix/Linux
  • Bày tỏ lo ngại về khó khăn trong việc bảo trì

    • Dự kiến sẽ khó bảo trì do quản lý phiên bản, thay đổi cờ lệnh, v.v.
    • Cách dùng công cụ --<CMD> có thể khiến phần trợ giúp/tài liệu hướng dẫn trở nên phức tạp
  • Giới thiệu công cụ có tên Nushell

    • Cách tiếp cận là cung cấp dữ liệu có cấu trúc ngay từ chính shell
  • Đánh giá tích cực việc các công cụ CLI hỗ trợ xuất JSON

    • Trên thực tế tuy là định dạng JSON nhưng thường phức tạp hoặc không cần thiết, nên có nghi ngờ về tính thực dụng
  • Ý kiến về cách sử dụng công cụ jc

    • jc dig example.com nên là cách dùng chính tốt hơn dig example.com | jc --dig
  • Bày tỏ sự ưa thích việc mọi đầu ra trong PowerShell đều là đối tượng

    • Khi viết script Bash thì cảm thấy nhớ tính năng đó
  • Bày tỏ sự kính trọng với người đảm nhận việc bảo trì công cụ jc

  • Hỏi về danh sách các công cụ lệnh Unix hiện đại chấp nhận tùy chọn --json

    • Có thể hữu ích nếu thêm thông tin đó vào kho lưu trữ
  • Chỉ ra lỗi thiết kế của Unix

    • Chương trình lệnh chỉ xuất mã thoát kiểu số nguyên cho chương trình gọi
    • Khi chương trình GUI gọi chương trình lệnh thì chỉ nhận được thông tin hạn chế
  • Bày tỏ sự ngạc nhiên vì không dùng textfsm

    • textfsm được dùng rộng rãi để phân tích đầu ra CLI của thiết bị mạng