JSON-Werkzeug Gron 0.6.0, Ls-Alternative Lsx 0.1.0, Arbeitsspeicher durchsuchen mit Memgrep 1.2.1, Powershell 7.1.0 für Linux, Konsolen-Sniffer Tcpdp 0.22.0, Tmux-Layoutmanager Tmex 1.0.8.
Gron 0.6.0
JSON-Dateien auf der Shell bearbeiten
Quelle: https://github.com/tomnomnom/gron
Lizenz: MIT
Alternativen: Jq, Fx
Ob für Konfigurationsdateien oder den Datenexport – JSON hat sich als strukturiertes Allzweckformat durchgesetzt, und zahlreiche Tools unterstützen es. Aufgrund seiner Struktur lässt es sich aber im Texteditor nicht besonders gut lesen. Das Go-Tool Gron wandelt komplette JSON-Dateien in separate Anweisungen um, also in einzelne Zeilen, was das Weiterverarbeiten deutlich erleichtert. Im Github-Repository von Gron finden sich Pakete für Linux, MacOS, FreeBSD und Windows.
Zum Konvertieren einer JSON-Datei gibt man beim Aufruf eine URL an; alternativ liest Gron über eine Pipe aus der Standardeingabe. Das Ergebnis schreibt es nach Stdout, das Speichern in einer Datei gelingt nur über einen Umleitungsoperator. Anschließend kann das Tool die Ausgabe zurück ins JSON-Format konvertieren.
In der Voreinstellung unterstützt Gron ein einfaches Syntax-Highlighting und färbt einige Schlüsselbegriffe ein. Der Schalter »-m« wechselt zu einer monochromen Ausgabe. Gron sortiert die Zeilen alphabetisch, aber »–no-sort« unterbindet das. Handelt es sich bei der Eingabequelle um eine via HTTPS erreichbare URL, kann die Zertifikatsprüfung zu Problemen führen. Verschluckt sich Gron hier, überspringt »-k« den Check und verarbeitet die Daten sofort.
Wer häufig JSON-Dateien verarbeiten muss, sollte sich Gron näher ansehen. Die Entwicklung scheint nicht besonders schnell zu laufen, aber schon jetzt stehen alle wichtigen Funktionen zur Verfügung.
Lsx 0.1.0
Überarbeitetes Ls
Quelle: https://github.com/itn3000/lsx
Lizenz: Freeware
Alternativen: Ls
Wer den Inhalt von Verzeichnissen auf der Kommandozeile betrachten möchte, nutzt dazu in der Regel Ls, das schnellen Zugriff auf alle wesentlichen Informationen bietet. Für das Weiterverarbeiten in Skripten wäre allerdings eine Ausgabe im CSV- oder JSON-Format hilfreich. Hier setzt das Rust-Tool Lsx an. Das Github-Repository enthält Pakete für Linux, MacOS und Windows. Diese kommen ohne Manpage, sodass man mit »-h« vorliebnehmen muss.
Ohne weitere Parameter aufgerufen, gibt Lsx den Inhalt des aktuellen Verzeichnisses und aller Unterverzeichnisse zeilenweise aus. Jede Zeile enthält den vollen Pfadnamen, Angaben zum Dateityp, zur Größe und zur letzten Änderung. Was den Dateityp angeht, so unterscheidet Lsx lediglich zwischen Datei, Verzeichnis und Link. Der Schalter »–leaf-only« reduziert die Ausgabe auf Dateien und symbolische Links. Letzteren folgt das Tool nur, wenn es per »–follow-symlink« dazu aufgefordert wurde.
Über »-m« legt man fest, in welcher Tiefe Lsx Verzeichnisse durchsuchen soll; in der Vorgabe sind es 100 Ebenen. Für das Filtern der Ausgabe gibt es die Schalter »-e« und »-i«, die Dateien und Verzeichnisse explizit einbinden beziehungsweise ausschließen. Alle Ergebnisse schreibt Lsx auf die Standardausgabe; »-o« nimmt eine Ausgabedatei entgegen. »–output-format« definiert, ob die Ausgabe im CSV- oder NDJSON-Format erfolgt.
Der Funktionsumfang des recht jungen Tools bleibt derzeit überschaubar, doch es hat Potenzial.
Memgrep 1.2.1
Arbeitsspeicher durchsuchen
Quelle: https://github.com/eras/memgrep
Lizenz: MIT
Alternativen: LiME, Draugr
Grep durchsucht zuverlässig Textdateien, unterstützt dazu reguläre Ausdrücke, schreibt auf Wunsch den Kontext dazu, gibt Zeilennummern aus und mehr. Beim Durchsuchen des Arbeitsspeicherbereichs von Prozessen stößt das GNU-Tool jedoch an seine Grenzen. Hier empfiehlt sich ein Spezialist wie Memgrep. Das in Rust implementierte Tool beschreibt sich selbst als “Grep für »/proc/PID/mem«”. Auf Github stehen fertige Pakete bereit. Die aktuelle Memgrep-Version setzt zur schnellen, parallelen Suche von regulären Ausdrücken auf die Hyperscan-Bibliothek Libhyperscan5.
Die Steuerung erfolgt über Aufrufparameter, eine Konfigurationsdatei gibt es nicht. Die Online-Hilfe über »-h« verrät alles über den noch recht überschaubaren Funktionsumfang. Memgrep sucht wahlweise im Speicherbereich aller Prozesse (»-a«) oder dem einer einzelnen, hinter »-p« angegebenen Prozess-ID. Das Suchmuster kann ein Text(fragment) oder ein regulärer Ausdruck sein.
Memgrep schreibt seine Ergebnisse auf die Standardausgabe. Es liefert dabei neben der PID der jeweiligen Prozesse auch den vollständigen Pfad der ausgeführten Datei sowie die Speicherbereiche zurück, in denen es das Suchmuster gefunden hat. Wer die Speicherbereiche nicht benötigt, beschränkt mit »-l« die Ausgabe auf die Prozessnummer und den Pfad. Der Schalter »-c« ermittelt, wie oft das Suchmuster im Speicherbereich des jeweiligen Prozesses vorkommt.
Noch kann Memgrep nicht allzu viel, doch das Tool wird aktiv weiterentwickelt. Es lohnt sich also, es im Auge zu behalten.
Powershell 7.1.0
Microsoft-Shell für alle
Quelle: https://github.com/PowerShell/PowerShell
Lizenz: MIT
Alternativen: Putty, Terminus
Vor vier Jahren stellte Microsoft die Powershell unter die MIT-Lizenz und veröffentlichte Versionen für Windows, Linux und MacOS. Seitdem ist das “universelle Werkzeug für alle Administratoren”, so der Hersteller, nicht länger auf Windows-Systeme begrenzt. Auf Github stehen Pakete für gängige Linux-Distributionen und andere Plattformen zum Download bereit. In der Voreinstellung landet die Powershell Core, so der vollständige Name unter Linux, nach der Installation in »/opt/microsoft/«. Mit »pwsh« startet man die Shell, »exit« beendet die Sitzung wieder.
Nach dem Start zeigt der »PS«-Prompt an, dass man sich in der Powershell befindet. Das Commandlet »Get-Command« blendet die verfügbaren Befehle ein; alternativ öffnet »Get-Help« die Online-Hilfe. Die Linux-Pakete enthalten außerdem eine Manpage, die alle wesentlichen Funktionen ausführlich erklärt. Außer diesen Cmdlets stellt die Powershell Core einfache Kommandozeilenbefehle bereit, die sich auch kombinieren lassen. Auch andere Shell-Funktionen wie die Umleitung von Ein- und Ausgaben sowie die Autovervollständigung sind vorhanden.
Powershell Core bringt nicht alle unter Windows vorhandenen Funktionen mit, was auch nicht sinnvoll wäre. Die aktuelle Version 7.1 vom 11. November 2020 enthält einige Fehlerkorrekturen und Verbesserungen sowie neue Funktionen. Als Basis dient das ebenfalls neue Framework .NET 5.
Windows-Admins, die in der Powershell zu Hause sind, dürften sich über die vertraute Umgebung auf Linux-Systemen freuen.
Tcpdp 0.22.0
Paket-Sniffer für die Shell
Quelle: https://github.com/k1LoW/tcpdp
Lizenz: MIT
Alternativen: Tcpdump, Wireshark
Sogenannte Sniffer, die Netzwerkpakete auf unterschiedlichen Schnittstellen mitschneiden, gehören zum grundlegenden Handwerkszeug jedes Sysadmins. Zu den bewährten Tools Tcpdump und Wireshark gesellt sich mit dem in Go implementierten Tcpdp ein weiterer Kandidat für die Konsole hinzu.
Das Tool kennt die drei Betriebsarten »proxy«, »probe« und »read«. Letztere erwartet eine Datei im PCAP-Format, die Tcpdp dann auswertet. Die Ergebnisse schreibt es in hexadezimaler Schreibweise in die Standardausgabe. Für eine bessere Lesbarkeit gibt es Dumper, die lesbaren Code für bestimmte Protokolle erzeugen. In der aktuellen Version enthält Tcpdp Dumper für PostgreSQL und MySQL.
Die beiden Modi »probe« und »proxy« können ebenfalls mit Dumpern umgehen, geben allerdings nur JSON aus. Während der »read«-Modus ohne Konfigurationsdatei arbeitet, benötigen die anderen beiden Varianten eine Einrichtungsdatei, die man hinter »-c« angibt; der Aufruf »tcpdp config« erzeugt eine Vorlage. Da Tcpdp im »probe«-Modus zum Mitschneiden die Bibliothek Pcap einsetzt, benötigt es Root-Rechte. Der Schalter »-B« bestimmt die Größe des Pcap-Puffers, »-s« die Snapshot-Größe (Standard: 64 KByte).
Noch ist der Funktionsumfang von Tcpdp recht überschaubar, es erscheinen aber regelmäßig neue Tcpdp-Versionen. Detaillierte Beispiele auf der Github-Seite helfen beim Einstieg.
Tmex 1.0.8
Layoutmanager für Tmux
Quelle: https://github.com/evnp/tmex
Lizenz: MIT
Alternativen: keine
Viele Administratoren nutzen Terminalmultiplexer wie Screen oder Tmux, um lokale und entfernte Systeme zu verwalten. Neben der Möglichkeit, Sessions zu trennen und jederzeit wieder aufzunehmen, öffnen diese Tools auch mehrere Shell-Sitzungen in einem Fenster, blenden eine Statusleiste ein und mehr. Der praktische Helfer Tmex verwaltet das Tmux-Layout. Als Shell-Skript ist er nach dem Entpacken sofort startklar; das Archiv enthält außerdem eine »package.json«-Datei zur Installation via Npm.
Beim Aufruf von Tmex gibt man immer den Namen einer Session an, dahinter folgen Parameter für das Layout. Der Schalter »-l« bestimmt die Aufteilung der Konsole. Die Anzahl der Ziffern hinter »-l« definiert, wie viele Spalten Tmex erzeugt, der Wert jeder Ziffer legt die Zeilenanzahl der betreffenden Spalte fest. So zeichnet »-l 123« beispielsweise drei Spalten, mit einer, zwei Zeilen und drei Zeilen. »-t« stellt die Aufteilung um und ordnet von oben nach unten. Die Github-Seite erklärt die beiden Schalter ausführlich und zeigt Anwendungsbeispiele.
Hinter den Parametern zur Fensteraufteilung folgen optional Shell-Kommandos, die Tmux dann beim Start ausführt. Ohne Angabe von Befehlen startet der Multiplexer einfach die Standard-Shell. Steht ein Kommando hinter »-s«, wird es direkt an Tmux gebunden. Genau wie bei Screen und Tmux selbst trennt »-d« eine Session, »-r« nimmt sie wieder auf.
Mit dem praktischen kleinen Tool Tmex kann man das Tmux-Layout schon beim Start definieren. Uwe**Vollbracht (hej)











