JC แปลงเอาต์พุตของเครื่องมือบรรทัดคำสั่งยอดนิยมให้เป็น JSON
(github.com/kellyjonbrazil)สรุปตัวแปลง JCJSON
jcจะแปลงเอาต์พุตของเครื่องมือ CLI, ประเภทไฟล์ และสตริงทั่วไปให้อยู่ในรูปแบบ JSON เพื่อให้พาร์สในสคริปต์ได้ง่ายขึ้น- สามารถดูตัวอย่างเอาต์พุตที่ถูกแปลงเป็น JSON ผ่านคำสั่ง
digและนำไปประมวลผลต่อด้วยเครื่องมืออย่างjqหรือjelloได้ - ใช้งานเป็นไลบรารี Python ได้เช่นกัน โดยในกรณีนี้จะคืนค่าเป็น Python dictionary, รายการของ dictionary หรือ iterable แบบ lazy ของ dictionary แทน JSON
วิธีติดตั้งตัวแปลง JCJSON
- ติดตั้งได้ผ่าน
pip, ที่เก็บแพ็กเกจของระบบปฏิบัติการ หรือดาวน์โหลดไบนารี - มีคำสั่งติดตั้งสำหรับลินุกซ์ดิสโทรหลายแบบ, macOS และ FreeBSD
วิธีใช้งานตัวแปลง JCJSON
- รับอินพุตที่ pipe มาจาก
STDINแล้วส่งเอาต์พุตของคำสั่งก่อนหน้าออกทางSTDOUTในรูปแบบ JSON - ใช้ไวยากรณ์ "magic" โดยเติม
jcไว้หน้าคำสั่งเพื่อแปลง หรือใช้หน้าพาธไฟล์/procได้ - ปรับรูปแบบเอาต์พุตและประมวลผลเฉพาะบางบรรทัดได้ผ่านตัวเลือก parser และฟังก์ชัน slice ที่หลากหลาย
จุดเด่นของตัวแปลง JCJSON
- มีทั้งการแสดงข้อมูลแบบปกติและแบบ raw และจะแปลงค่าตัวเลขที่รู้จักตามสคีมาให้เป็นค่า JSON แบบ int/float
- เข้าถึง JSON แบบดิบที่ผ่านการ preprocess ได้ด้วยตัวเลือก
--rawหรือพารามิเตอร์raw=True - มี streaming parser สำหรับจัดการเอาต์พุตคำสั่งปริมาณมากได้อย่างประหยัดหน่วยความจำ
ความสำคัญของตัวแปลง JCJSON
- สามารถดูแรงบันดาลใจของโปรเจ็กต์ที่ต้องการนำปรัชญา Unix มาปรับใช้ในศตวรรษที่ 21 และกรณีการใช้งานต่าง ๆ ได้จากบล็อกโพสต์และบทสัมภาษณ์
- มีประโยชน์ในการพาร์สเอาต์พุตคำสั่งในหลายสภาพแวดล้อม เช่น Bash scripting, Ansible, Saltstack, Nornir และ FortiSOAR
ความเข้ากันได้ของตัวแปลง JCJSON
- parser บางตัวทำงานได้โดยไม่ขึ้นกับแพลตฟอร์ม และ parser ที่แปลงเอาต์พุตเฉพาะแพลตฟอร์มอาจสร้างข้อความเตือนเรื่องความเข้ากันได้
- ตรวจสอบข้อมูล parser ทั้งหมดได้ด้วยการรัน
jc -ap
วิธีมีส่วนร่วมกับตัวแปลง JCJSON
- ยินดีรับการมีส่วนร่วมทั้งการเพิ่มหรือปรับปรุงโค้ดและ parser โดยสามารถใช้
jc/parsers/foo.pyหรือjc/parsers/foo_s.pyเป็นต้นแบบแล้วส่ง pull request ได้
ความเห็นของ GN⁺
ประเด็นสำคัญที่สุดของบทความนี้คือ jc สามารถแปลงเอาต์พุตของคำสั่ง, ประเภทไฟล์ และสตริงหลากหลายแบบให้เป็น JSON เพื่อให้นำไปประมวลผลเชิงโปรแกรมได้ ซึ่งช่วยให้นักพัฒนาจัดการข้อมูลได้ง่ายขึ้น โดยเฉพาะเมื่อต้องทำสคริปต์ในสภาพแวดล้อม Unix และ Linux บทความนี้น่าสนใจเพราะ jc เป็นเครื่องมือที่ช่วยยกระดับระบบอัตโนมัติและประสิทธิภาพในการพัฒนาซอฟต์แวร์และการดูแลระบบได้อย่างมาก
1 ความคิดเห็น
ความเห็นบน Hacker News
กล่าวถึงการแก้ปัญหาการแปลงผลลัพธ์คำสั่งเป็นรูปแบบ JSON บน FreeBSD โดยใช้ไลบรารี
libxolsเคยรองรับ แต่มีกรณีที่ถูกถอดออก--jsonเป็นมาตรฐานบน Unix/Linux เช่นกันแสดงความกังวลเกี่ยวกับความยากในการบำรุงรักษา
--<CMD>อาจทำให้ help/manual ซับซ้อนขึ้นแนะนำเครื่องมือชื่อ Nushell
ประเมินในแง่บวกที่เครื่องมือ CLI รองรับการส่งออกเป็น JSON
แสดงความคิดเห็นเกี่ยวกับวิธีใช้เครื่องมือ
jcjc dig example.comควรเป็นรูปแบบการใช้งานหลักที่ดีกว่าdig example.com | jc --digแสดงความชอบที่ใน PowerShell ผลลัพธ์ทุกอย่างเป็นอ็อบเจ็กต์
แสดงความนับถือต่อผู้ที่รับหน้าที่บำรุงรักษาเครื่องมือ
jcถามถึงรายชื่อเครื่องมือคำสั่งยูนิกซ์สมัยใหม่ที่รองรับตัวเลือก
--jsonชี้ให้เห็นข้อบกพร่องด้านการออกแบบของยูนิกซ์
แสดงความแปลกใจที่ไม่ได้ใช้
textfsmtextfsmถูกใช้อย่างแพร่หลายในการพาร์สผลลัพธ์ CLI ของอุปกรณ์เครือข่าย