QShell Utilities – Nützliche Werkzeuge in IBM i

4. Dezember 2017 | Von | Kategorie: Systemmanagement

Die QShell, angekündigt 1998 als Bestandteil von OS/400 V4R2, ist seit etwa 20 Jahren für IBM i Anwender verfügbar, wird aber nach meiner Erfahrung noch von zu wenigen Administratoren wirklich genutzt. Oft wird sie als ein Fremdkörper angesehen, der nichts mit dem Betriebssystem zu tun hat. Irrtum!

von Dr. Wolfgang Rother

© CC0

Es gibt in der QShell schon seit vielen Jahren nützliche Tools, die z.B. ein komfortables Arbeiten mit dem Integrierten File System (IFS) ermöglichen. Haben Sie beispielsweise schon einmal Dateien im IFS gesucht oder sich gefragt, worin sich eigentlich zwei Dateien unterscheiden?

Kritiker der QShell würden entgegnen, dass man solche Probleme komfortabel über Windows Netzlaufwerke lösen kann. Stimmt, aber jedes Netzlaufwerk kann auch als Sicherheitslücke eingestuft werden. Obwohl Viren und RansomWare dem Betriebssystem IBM i zwar unbekannt sind, übergibt man mit Netzlaufwerken die Verwaltung der freigegeben Verzeichnissen teilweise an MS Windows.1 Allein schon unter diesem Aspekt lohnt es, sich mit den nativen Möglichkeiten der IFS Dateiverwaltung zu beschäftigen.

1    Warum sonst gibt es Virenscanner für IBM i, obwohl dieses Betriebssystem doch immun gegenüber Viren ist? Siehe z.B. auch https://www.itjungle.com/2017/04/10/assessing-ransomware-threat-ibm/

Ein anderer Aspekt:

Immer mehr junge Administratoren mit Linux Kenntnissen verwalten auch IBM i. Denen sind die meisten QShell Kommandos bekannt und sie könnten ihre Aufgaben teilweise auch mit QShell Skripts statt CL Programmen erledigen – auch wenn Aufrufparameter, wie in unterschiedlichen Linux Distributionen durchaus üblich, manchmal verschieden sind.

Die gängigen IFS Befehle, wie WRKLNK und MKDIR, dürften jedem bekannt sein. 2 Eine vollstän­dige Übersicht findet man z.B. unter

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/ifs/rzaaxifscmd.htm

2    Navigation im IFS: https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rzahz/rzahztututil.htm

Wenn die IBM CL Befehle bereitstellt, wozu braucht man dann die QShell für das Arbeiten mit dem IFS?
Man kann Aufgaben teilweise einfacher und auch schneller bewältigen. Die CL Befehle können einfach nicht alles abdecken, wie z.B. die oben erwähnten Aufgabenstellungen. QShell Befehle, wie grep, find, cmp, dircmp können in einer 5250 basierten QShell Session helfen.
In einer Serie von Artikeln werden Autoren versuchen die nützlichen Werkzeuge der QShell anhand praktischer Beispiele zu erläutern. Nebenbei bekommt man gleichzeitig ein Verständnis für das Arbeiten in einer Unix/Linux Umgebung. Auf eine vollständige Beschreibung aller Möglichkeiten wird dabei verzichtet.

Suchen im IFS nach Dateinamen und Eignern mittels find

Das find Kommando hilft generell bei der Suche nach Dateien in einer Verzeichnisstruktur. Zum Beispiel kann man eine Datei über den Namen rekursiv in einem Verzeichnis suchen:

find /home –name datei.txt zeigt also an, wo sich das File mit dem Namen „datei.txt“ im Verzeichnis /home befindet. Manchmal ist es notwendig den Dateinamen in Hochkommata oder Apostrophe einzuschließen.

Praktisch bei der Suche ist natürlich auch die Verwendung von „regular expressions“.3 Der Ausdruck „*“ steht für eine beliebige Zeichenkette, das „?“ für ein einzelnes Zeichen – um nur die einfachsten Möglichkeiten aufzuzeigen.

3    z.B. https://en.wikipedia.org/wiki/Regular_expression

Wer mehr zu Regular Expressions wissen möchte, findet dazu genügend Tutorials im Internet.

Nützlich ist auch, dass man mit find nach Dateien suchen kann, die einem bestimmten Benutzer gehören: So würde z.B.

find . -user testuser alle Dateien im aktuellen Verzeichnis (Abkürzung “.”) anzeigen, die dem User ­TESTUSER gehören.

Der Schalter „-exec“ erlaubt die Ausführung von Kommandos auf die gefunden Dateien.

Ausgangspunkt der Suche ist hier das Verzeichnis /qibm/proddata/Access/Windows, wie der Befehl pwd (Print Work Directory), der zur Anzeige des aktuellen Verzeichnisses dient, zeigt. Gesucht werden im ersten Teil des Befehls alle exe Dateien in diesem Verzeichnis. Das nachfolgende Kommando ls –l zeigt nun für jede gefundene Datei, ausgedrückt durch {}, Detailinformationen an. Dabei werden Berechtigungen, Anzahl der Links, der Eigner, die Gruppennummer, die Dateigröße in Bytes, das Datum der letzten Änderung und der relative Pfadname zum aktuellen Verzeichnis angezeigt. Der Abschluß mit \; ist notwendig um anzuzeigen, wo der Befehl zu Ende ist.

Nützlich ist auch die Umlenkung der Ausgabe in Dateien.4 Setzt man am Ende eines QShell Befehls ein „>“ gefolgt von einem Dateinamen, z.B. merke.txt, so wird die Ausgabe des Befehls in eine gleichnamige Datei geschrieben. Vorsicht, eine bestehende Datei wird dabei überschrieben. Möchte man das nicht und alternativ nur Inhalte hinzufügen, verwendet man den Operator „>>“.

4    Siehe auch: https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzahz/rzahzredirect.htm

Mittels das cat Befehls, der den Inhalt von Dateien anzeigt, kann dies leicht nachgeprüft werden. Um die Länge der Ausgaben zu verkürzen, wird nur wie im vorherigen Beispiel nach exe-Dateien gesucht, eingeschränkt auf die, deren Name mit „s“ beginnt.

Der letzte Befehl ist schon ziemlich lang, aber wie in mathematischen Formeln, kann man diesen, wenn man die Operatoren und Schalter kennt, einfach zerlegen. Versuchen Sie doch selbst herauszufinden, was jetzt nach Eingabe des Befehls

find . -name merke.txt -exec cat {} \;
passiert. Sie können ihre Vermutung jederzeit an ihrem System selbst überprüfen. (Hinweis: cat zeigt den Inhalt von Dateien an.)

Ein wichtiger Hinweis noch am Schluß: Die meisten Dateisysteme im IFS sind „case-sensitive“! Achten Sie also auf die Klein- und Großschreibung.
Eine Lösung bieten wieder Regular Expressions. Durch Angabe einer Zeichenmenge in eckigen Klammern kann man festlegen, dass jede Zeichenkette die Suchbedingung erfüllt, die an der Stelle ein Zeichen dieser Menge enthält.

Daraus ergibt sich ein einfacher, wenn vielleicht auch nicht der eleganteste Weg, dieses Problem zu lösen. Jedes Zeichen, bei dem man unsicher ist, wird einfach als Menge des jeweiligen Klein- und Großbuchstabens in eckigen
Klammern angegeben.

Über den Autor

Dr. Wolfgang Rother arbeitet als Senior IT Specialist Power Systems bei IBM, sein Spezialgebiet ist IBM i. Zu dieser Thematik hat er bereits zahlreiche Fachbeiträge veröffentlicht. Zudem engagiert sich Dr. Rother mit der IBM Academic Initiative dafür, IT-Fachkräftenachwuchs für den Bereich Power Systems zu gewinnen. Dieses Ziel unterstützt er unter anderem mit seiner Tätigkeit als Dozent an verschiedenen Universitäten und Hochschulen.

Schlagworte: , , , , , , , ,

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.