2 Punkte von GN⁺ 2023-12-10 | 1 Kommentare | Auf WhatsApp teilen

Zusammenfassung des JC-JSON-Konverters

  • jc wandelt die Ausgabe von CLI-Tools, Dateitypen und allgemeinen Zeichenketten in das JSON-Format um, damit sie in Skripten leichter geparst werden kann.
  • Anhand eines Beispiels mit dem Befehl dig lässt sich die in JSON umgewandelte Ausgabe ansehen; sie kann anschließend mit Tools wie jq oder jello weiterverarbeitet werden.
  • Es kann auch als Python-Bibliothek verwendet werden; in diesem Fall gibt es statt JSON Python-Dictionaries, Listen von Dictionaries oder lazy iterierbare Objekte von Dictionaries zurück.

Installationsmethoden für den JC-JSON-Konverter

  • Die Installation ist über pip, OS-Paketquellen oder den Download von Binärdateien möglich.
  • Es werden Installationsbefehle für verschiedene Linux-Distributionen, macOS und FreeBSD bereitgestellt.

Verwendung des JC-JSON-Konverters

  • Nimmt über STDIN weitergeleitete Eingaben entgegen und gibt die Ausgabe des vorherigen Befehls als JSON über STDOUT aus.
  • Mit der „Magic“-Syntax kann jc vor einen Befehl gesetzt werden, um dessen Ausgabe umzuwandeln; ebenso kann es vor einem /proc-Dateipfad verwendet werden.
  • Mit verschiedenen Parser-Optionen und Slice-Funktionen lassen sich Ausgabeformat anpassen und bestimmte Zeilen verarbeiten.

Eigenschaften des JC-JSON-Konverters

  • Bietet standardmäßige und rohe Datendarstellungen und wandelt bekannte numerische Werte gemäß Schema in int-/float-JSON-Werte um.
  • Über die Option --raw oder den Parameter raw=True ist Zugriff auf rohe, vorverarbeitete JSON-Daten möglich.
  • Streaming-Parser verarbeiten große Befehlsausgaben speichereffizient.

Warum der JC-JSON-Konverter wichtig ist

  • Motivation und Anwendungsfälle des Projekts, das die Unix-Philosophie ins 21. Jahrhundert übertragen will, sind in Blogposts und Interviews zu finden.
  • Nützlich zum Parsen von Befehlsausgaben in Umgebungen wie Bash-Scripting, Ansible, Saltstack, Nornir und FortiSOAR.

Kompatibilität des JC-JSON-Konverters

  • Einige Parser funktionieren plattformunabhängig; Parser, die plattformspezifische Ausgaben umwandeln, können Warnmeldungen zur Kompatibilität erzeugen.
  • Informationen zu allen Parsern lassen sich mit jc -ap anzeigen.

Wie man zum JC-JSON-Konverter beitragen kann

  • Beiträge in Form von Code oder neuen/verbesserten Parsern sind willkommen; Pull Requests können mithilfe von jc/parsers/foo.py oder jc/parsers/foo_s.py als Vorlage eingereicht werden.

Meinung von GN⁺

Das Wichtigste an diesem Beitrag ist, dass jc die Ausgabe unterschiedlichster Befehle, Dateitypen und Zeichenketten in JSON umwandelt und damit programmatisch nutzbar macht. Das erleichtert Entwicklerinnen und Entwicklern den Umgang mit Daten und ist besonders beim Scripting in Unix- und Linux-Umgebungen nützlich. Interessant ist der Beitrag, weil jc Automatisierung und Effizienz in der Softwareentwicklung und Systemadministration deutlich verbessern kann.

1 Kommentare

 
GN⁺ 2023-12-10
Hacker-News-Kommentar
  • Problem wird unter FreeBSD mithilfe der Bibliothek libxo gelöst, um Befehlsausgaben in das JSON-Format umzuwandeln

    • Der Befehl ls wurde unterstützt, es gab jedoch Fälle, in denen dies wieder entfernt wurde
    • Nicht von allen Utilities unterstützt
    • PowerShell bietet standardmäßig strukturierte Ausgabe
    • Auch unter Unix/Linux wird die Notwendigkeit einer Standardisierung des Flags --json angesprochen
  • Bedenken hinsichtlich der Schwierigkeit der Wartung geäußert

    • Versionsverwaltung, Änderungen an Befehls-Flags usw. dürften die Wartung erschweren
    • Die Verwendung von Tools nach dem Muster --<CMD> könnte Hilfe/Manual unnötig kompliziert machen
  • Das Tool Nushell wird vorgestellt

    • Ein Ansatz, bei dem die Shell selbst strukturierte Daten bereitstellt
  • Positive Einschätzung dazu, dass CLI-Tools JSON-Ausgabe unterstützen

    • In der Praxis ist es zwar JSON, aber oft komplex oder unnötig, weshalb der praktische Nutzen infrage gestellt wird
  • Meinung zur Verwendung des Tools jc

    • jc dig example.com sollte die bevorzugte Hauptnutzung sein statt dig example.com | jc --dig
  • Vorliebe dafür geäußert, dass in PowerShell alle Ausgaben Objekte sind

    • Beim Schreiben von Bash-Skripten wird diese Funktion vermisst
  • Respekt gegenüber der Person, die die Wartung des Tools jc übernimmt

  • Frage nach einer Liste moderner Unix-Befehlszeilenprogramme, die die Option --json akzeptieren

    • Es könnte nützlich sein, diese Informationen dem Repository hinzuzufügen
  • Hinweis auf einen Designfehler von Unix

    • Befehlsprogramme geben dem aufrufenden Programm nur einen ganzzahligen Exit-Code aus
    • Wenn GUI-Programme Befehlsprogramme aufrufen, erhalten sie nur begrenzte Informationen
  • Verwunderung darüber, dass textfsm nicht verwendet wurde

    • textfsm wird häufig zum Parsen der CLI-Ausgaben von Netzwerkgeräten eingesetzt