Nicht lieferbar

Scriptprogrammierung für Solaris und Linux
Systemverwaltung und Anwendung mit nawk, Korn-/Bourne-Shell und Perl
Versandkostenfrei!
Nicht lieferbar
Dieses Buch zeigt Ihnen, wie Sie als Systemadministrator, Programmierer oder Ingenieur unter Solaris und Linux Ihre Aufgaben mit Hilfe von Scripts schnell und effektiv lösen. Die Autoren führen Sie von den Grundlagen von nawk, Perl und der Korn-/Bourne-Shell bis hin zu fortgeschrittenen Praxisbeispielen aus Systemadministration, Statistik und Numerik. Sie lernen, kleinere Automatisierungsprobleme mit Hilfe von Textprozessoren, nawk und Shellscripts zu lösen und Perl in Shell-Scripts einzusetzen. Sie erfahren, welche Möglichkeiten Ihnen Scriptprogrammierung beim Dokumentieren, Testen, Erstellen und Pflegen von umfangreichen Softwarepaketen bietet. Die zahlreichen Beispiele bieten Ihnen wertvolle Tipps und Lösungen für Ihre eigene Arbeit - die Spanne reicht von der einfachen Textanalyse über die Durchsatzmessung von Plattencontrollern bis hin zu High-Availability-Lösungen für Datensicherung und Netzwerküberwachung. (aus Kapitel 1, "Überblick") Werkzeuge zur Scriptprogrammierung
Merkmale von Scriptsprachen
Scriptsprachen zählen zu den problemorientierten Programmiersprachen. Eine allgemein anerkannte Definition des Begriffs "Scriptsprache" gibt es scheinbar nicht; man kann aber folgende für diesen Sprachtyp charakteristische Kriterien angeben:
In einer Scriptsprache formulierte Programme (Scripts) werden interpretativ ausgeführt. Sie eignen sich daher für die "Ad-hoc-Programmierung", bei der keine zeitaufwändigen Compilerläufe erforderlich sind. Bei manchen Sprachen ist das Kompilieren von Programmen optional möglich.
Typdeklarationen für Variablen sind nicht notwendig, bei manchen Sprachen (z.B. in der Korn- und Bourne-again-Shell) jedoch möglich.
Variablenwerte werden durchweg als Zeichenfolgen (Strings) gespeichert, bei manchen Sprachen (z.B. bei Perl) ggf. zusätzlich als Gleitkommazahlen.
Externe Kommandos lassen sich aus einem Script aufrufen, Kommandoresultate können in Scripts übernommen und z.B. in Variablen abgelegt werden. awk-Varianten
Die Bezeichnung awk leitet sich von den Namen der Erfinder (A.V. Aho, B.W. Kernighan und P.J. Weinberger) ab. Bei diesem Tool handelt es sich um eine Programmiersprache, die syntaktische Ähnlichkeiten mit C aufweist. Ursprünglich für Unix konzipiert, ist es standardmäßig auch Linux-Bestandteil; außerdem gibt es Implementierungen für MS-DOS und Windows (mawk). Die wichtigsten awk-Varianten sind: awk
Entstanden 1977. Das Werkzeug wurde aus einer Kombination von grep- und sed-Fähigkeiten entwickelt; es bietet i.W. folgende Möglichkeiten:
Zeichenkettenverarbeitung mit Hilfe von Suchmustern und Dateizeilennummern, dazu Stringfunktionen
Programmfluss-Steuerung (z.B. for-Konstrukte, if-Konstrukte etc.)
numerische Datenverarbeitung (u.a. diverse Funktionen)
Datenorganisation in assoziativen Feldern
Zugriff auf Kommandozeilenargumente
nawk
New awk, entstanden 1985, inzwischen Standard bei Unix-Systemen. Zusätzlich zu den awk-Eigenschaften enthält das Tool diese Fähigkeiten:
Kommunikation mit externen Kommandos (Pipe-Mechanismen)
Aufruf externer Kommandos (system()-Funktion wie in C)
zusätzliche mathematische Funktionen und Stringfunktionen
anwenderdefinierte Funktionen
Kapitel 3 geht auf nawk ein. gawk
GNU awk, entstanden 1996, Standard bei Linux-Systemen. Dies ist eine Weiterentwicklung von nawk mit einigen zusätzlichen Zeit- und Dateizugriffsfunktionen (z.B. fflush( ) für die ungepufferte Datenausgabe). Unix/Linux-Shells
Shells gehören zu den Kommandosprachen (Job Control Languages), die Mitte der 60er Jahre des 20. Jahrhunderts entstanden. Sie wurden in erster Linie als konfigurierbare alphanumerische Schnittstellen zur Mensch-Maschine-Kommunikation konzipiert; man spricht auch von Command Line Interfaces (CLIs). Bei Unix- und Linux-Shells findet man zwei Sprachklassen, die auf unterschiedlichen syntaktischen Konzepten basieren und z.T. auch auf Windows-Systemen laufen.
Die Bourne-Shell-Klasse ist ab 1974 entstanden; ihre Vertreter eignen sich besonders gut zur Programmierung. Die wichtigsten Kommandointerpreter dieser Klasse werden im Folgenden kurz beschrieben. Die Bourne-Shell sh
Sie existiert seit 1974 (S. Bourne) und ist die Standard-Shell für Unix-Systemadministratoren. Die sh verfügt über
skalare Variablen,
Konstrukte zur Programmfluss-Steuerung,
Schnittstellen zur Kommunikation mit externen Kommandos und zu Kommandozeilenargumenten,
Möglichkeiten zur Funktionsdefinition durch den Anwender und
Möglichkeiten zur anwenderdefinierten Signalbehandlung (Trap Handling).
Die Korn-Shell ksh
Sie wurde zunächst 1983 von D. Korn als Erweiterung der Bourne-Shell entwickelt und 1988 sowie1993 als ksh88 bzw. ksh93 nochmals ausgebaut. Derzeit ist die ksh88 (üblicherweise kurz als die ksh bezeichnet) bei den meisten Unix-Systemen die Standard-Shell für Anwender. Als pdksh istsie auch für Linux zu bekommen. Die Korn-Shell hat die Fähigkeiten der Bourne-Shell; hinzukommen:
Optionale Variablentypisierung (z. B. für Ganzzahlen),
Arrays,
eine Kommandozeilenhistorie mit Editiermöglichkeiten,
die Möglichkeit zum Definieren eigener Kommandos (Aliase),
Ganzzahlarithmetik und bitweise Logik,
Testhilfen,
Job-Kontrolle (Hintergrundprozesse) und
eine erweiterte E/A-Funktionalität.
Die Bourne-again-Shell bash
Sie ist etwa 1990 als alternative Weiterentwicklung der Bourne-Shell entstanden und wird bei Linux als Standard-Shell eingesetzt. Die bash hat in etwa die Mächtigkeit der Korn-Shell (allerdings teilweise mit anderer Syntax) und läuft optional auch unter Unix- und Windows-Betriebssystemen. Zur Kompatibilität lässt sich sagen, dass sh-Scripts bis auf wenige exotische Fälle auch unter der ksh und unter der bash funktionieren; umgekehrt gilt dies nicht. Leider sind ksh und bash weitgehend nicht miteinander kompatibel. Kapitel 4 befasst sich mit sh, ksh (genauer: ksh88) und bash. Als zweite Linie hat man die C-Shell-Klasse. Sie wurde ab 1978 entwickelt und ist eher für den interaktiven Einsatz geeignet; deshalb werden diese Shells im vorliegenden Buch nicht weiter besprochen. Hauptsächlich benutzt man die folgenden beiden Kommandointerpreter: Die C-Shell csh
Sie ist 1978 entstanden (B. Joy). Hierbei handelte es sich um den ersten Versuch, die Mächtigkeit der Bourne-Shell sh auszubauen; leider wurde dabei auch eine neue Syntax eingeführt, die bei den eingebauten Kommandos sprachliche Anleihen an C macht und keine Kompatibilität zur Bourne-Shell-Klasse bietet. Die C-Shell verfügt neben den Fähigkeiten der Bourne-Shell u. a. über einen Kommandozeileneditor (Historie), Job-Kontrolle sowie Definitionsmöglichkeiten für Aliase und Arrays. Die csh ist standardmäßig auf Unix-Systemen zu finden; es gibt auch Windows-Implementierungen. Hinderlich für die Verwendung als Programmiersprache sind i. W. folgende Eigenschaften:
Die dedizierte Umlenkung der Meldungsausgabe (stderr) ist nicht möglich.
Nur die Signale HUP (1), INT (2) und TERM (15) können durch anwenderdefinierte Trap-Handler erfasst werden.
Die Maskierungsmechanismen bzgl. Sonderzeichen sind unzulänglich.
Lokale und globale Variablen werden syntaktisch unterschiedlich behandelt.
Die Analyse von Kommandozeilen verläuft nicht immer fehlerfrei.
Die TENEX-C-Shell tcsh
Die TENEX-C-Shell entstand etwa Anfang der 90er Jahre des letzten Jahrhunderts als Erweiterung der csh. Sie enthält neben anderem eine Rechtschreibprüfung für Kommandonamen; weiterhin wurden einige Fehler der C-Shell ausgemerzt. Die tcsh wird standardmäßig mit Linux ausgeliefert und ist optional auch auf Unix-Systemen vorhanden. (TENEX war übrigens der Name eines auf DEC PDP-10 laufenden Netzwerkbetriebssystems.) Perl
Der Name Perl leitet sich von Practical Extraction and Reporting Language ab. Diese Sprache wurde von L. Wall entwickelt und steht seit Ende 1987 auf unterschiedlichen Systemplattformen (Unix, Linux, Windows, Mac-OS etc.) zur Verfügung. Man kann Perl als eine Kombination unterschiedlicher Sprachen und Unix-Tools wie nawk, C, sort, grep etc. auffassen. Neben den bereits skizzierten awk-, sed- und grep-Fähigkeiten - wenn auch in eigener Syntax - weist Perl in den derzeitigen Versionen 5.x u. a. folgende Besonderheiten auf:
Merkmale der objektorientieren Programmierung (OOP) ähnlich C++ und Java
Schnittstelle zu vielen Unix-Systemfunktionen (z. B. fork(), iocntl() etc.)
Anbindung an diverse relationale Datenbanksysteme; besonders oft verwendet man die Kombination Perl/MySQL.
Zugang zu umfangreichen Bibliotheken (use-Befehl)
Perl wird häufig in WWW-Anwendungen eingesetzt. Allerdings ist das nicht zwingend, denn einem Webserver ist es gleichgültig, in welcher Sprache ein CGI-Script formuliert ist. CGI bedeutet Common Gateway Interface und ist ein Protokoll zur Webprogrammierung. Immerhin ist Perl hierfür aber aufgrund seiner weiten Verbreitung und der mächtigen Textverarbeitungsmöglichkeiten gut geeignet. Gerade über diese Sprache gibt es inzwischen zahlreiche voluminöse Veröffentlichungen, und eine erschöpfende Darstellung würde den Rahmen des vorliegenden Buches sprengen. Aus diesem Grund werden in Kapitel 5 lediglich die wichtigsten Spracheigenschaften für die tägliche Arbeit dargestellt, wobei der Schwerpunkt auf der Einbettung relativ kurzer Perl-Konstrukte in Shell-Scripts liegt. Die Dateien zum Buch können Sie hier herunterladen .
Merkmale von Scriptsprachen
Scriptsprachen zählen zu den problemorientierten Programmiersprachen. Eine allgemein anerkannte Definition des Begriffs "Scriptsprache" gibt es scheinbar nicht; man kann aber folgende für diesen Sprachtyp charakteristische Kriterien angeben:
In einer Scriptsprache formulierte Programme (Scripts) werden interpretativ ausgeführt. Sie eignen sich daher für die "Ad-hoc-Programmierung", bei der keine zeitaufwändigen Compilerläufe erforderlich sind. Bei manchen Sprachen ist das Kompilieren von Programmen optional möglich.
Typdeklarationen für Variablen sind nicht notwendig, bei manchen Sprachen (z.B. in der Korn- und Bourne-again-Shell) jedoch möglich.
Variablenwerte werden durchweg als Zeichenfolgen (Strings) gespeichert, bei manchen Sprachen (z.B. bei Perl) ggf. zusätzlich als Gleitkommazahlen.
Externe Kommandos lassen sich aus einem Script aufrufen, Kommandoresultate können in Scripts übernommen und z.B. in Variablen abgelegt werden. awk-Varianten
Die Bezeichnung awk leitet sich von den Namen der Erfinder (A.V. Aho, B.W. Kernighan und P.J. Weinberger) ab. Bei diesem Tool handelt es sich um eine Programmiersprache, die syntaktische Ähnlichkeiten mit C aufweist. Ursprünglich für Unix konzipiert, ist es standardmäßig auch Linux-Bestandteil; außerdem gibt es Implementierungen für MS-DOS und Windows (mawk). Die wichtigsten awk-Varianten sind: awk
Entstanden 1977. Das Werkzeug wurde aus einer Kombination von grep- und sed-Fähigkeiten entwickelt; es bietet i.W. folgende Möglichkeiten:
Zeichenkettenverarbeitung mit Hilfe von Suchmustern und Dateizeilennummern, dazu Stringfunktionen
Programmfluss-Steuerung (z.B. for-Konstrukte, if-Konstrukte etc.)
numerische Datenverarbeitung (u.a. diverse Funktionen)
Datenorganisation in assoziativen Feldern
Zugriff auf Kommandozeilenargumente
nawk
New awk, entstanden 1985, inzwischen Standard bei Unix-Systemen. Zusätzlich zu den awk-Eigenschaften enthält das Tool diese Fähigkeiten:
Kommunikation mit externen Kommandos (Pipe-Mechanismen)
Aufruf externer Kommandos (system()-Funktion wie in C)
zusätzliche mathematische Funktionen und Stringfunktionen
anwenderdefinierte Funktionen
Kapitel 3 geht auf nawk ein. gawk
GNU awk, entstanden 1996, Standard bei Linux-Systemen. Dies ist eine Weiterentwicklung von nawk mit einigen zusätzlichen Zeit- und Dateizugriffsfunktionen (z.B. fflush( ) für die ungepufferte Datenausgabe). Unix/Linux-Shells
Shells gehören zu den Kommandosprachen (Job Control Languages), die Mitte der 60er Jahre des 20. Jahrhunderts entstanden. Sie wurden in erster Linie als konfigurierbare alphanumerische Schnittstellen zur Mensch-Maschine-Kommunikation konzipiert; man spricht auch von Command Line Interfaces (CLIs). Bei Unix- und Linux-Shells findet man zwei Sprachklassen, die auf unterschiedlichen syntaktischen Konzepten basieren und z.T. auch auf Windows-Systemen laufen.
Die Bourne-Shell-Klasse ist ab 1974 entstanden; ihre Vertreter eignen sich besonders gut zur Programmierung. Die wichtigsten Kommandointerpreter dieser Klasse werden im Folgenden kurz beschrieben. Die Bourne-Shell sh
Sie existiert seit 1974 (S. Bourne) und ist die Standard-Shell für Unix-Systemadministratoren. Die sh verfügt über
skalare Variablen,
Konstrukte zur Programmfluss-Steuerung,
Schnittstellen zur Kommunikation mit externen Kommandos und zu Kommandozeilenargumenten,
Möglichkeiten zur Funktionsdefinition durch den Anwender und
Möglichkeiten zur anwenderdefinierten Signalbehandlung (Trap Handling).
Die Korn-Shell ksh
Sie wurde zunächst 1983 von D. Korn als Erweiterung der Bourne-Shell entwickelt und 1988 sowie1993 als ksh88 bzw. ksh93 nochmals ausgebaut. Derzeit ist die ksh88 (üblicherweise kurz als die ksh bezeichnet) bei den meisten Unix-Systemen die Standard-Shell für Anwender. Als pdksh istsie auch für Linux zu bekommen. Die Korn-Shell hat die Fähigkeiten der Bourne-Shell; hinzukommen:
Optionale Variablentypisierung (z. B. für Ganzzahlen),
Arrays,
eine Kommandozeilenhistorie mit Editiermöglichkeiten,
die Möglichkeit zum Definieren eigener Kommandos (Aliase),
Ganzzahlarithmetik und bitweise Logik,
Testhilfen,
Job-Kontrolle (Hintergrundprozesse) und
eine erweiterte E/A-Funktionalität.
Die Bourne-again-Shell bash
Sie ist etwa 1990 als alternative Weiterentwicklung der Bourne-Shell entstanden und wird bei Linux als Standard-Shell eingesetzt. Die bash hat in etwa die Mächtigkeit der Korn-Shell (allerdings teilweise mit anderer Syntax) und läuft optional auch unter Unix- und Windows-Betriebssystemen. Zur Kompatibilität lässt sich sagen, dass sh-Scripts bis auf wenige exotische Fälle auch unter der ksh und unter der bash funktionieren; umgekehrt gilt dies nicht. Leider sind ksh und bash weitgehend nicht miteinander kompatibel. Kapitel 4 befasst sich mit sh, ksh (genauer: ksh88) und bash. Als zweite Linie hat man die C-Shell-Klasse. Sie wurde ab 1978 entwickelt und ist eher für den interaktiven Einsatz geeignet; deshalb werden diese Shells im vorliegenden Buch nicht weiter besprochen. Hauptsächlich benutzt man die folgenden beiden Kommandointerpreter: Die C-Shell csh
Sie ist 1978 entstanden (B. Joy). Hierbei handelte es sich um den ersten Versuch, die Mächtigkeit der Bourne-Shell sh auszubauen; leider wurde dabei auch eine neue Syntax eingeführt, die bei den eingebauten Kommandos sprachliche Anleihen an C macht und keine Kompatibilität zur Bourne-Shell-Klasse bietet. Die C-Shell verfügt neben den Fähigkeiten der Bourne-Shell u. a. über einen Kommandozeileneditor (Historie), Job-Kontrolle sowie Definitionsmöglichkeiten für Aliase und Arrays. Die csh ist standardmäßig auf Unix-Systemen zu finden; es gibt auch Windows-Implementierungen. Hinderlich für die Verwendung als Programmiersprache sind i. W. folgende Eigenschaften:
Die dedizierte Umlenkung der Meldungsausgabe (stderr) ist nicht möglich.
Nur die Signale HUP (1), INT (2) und TERM (15) können durch anwenderdefinierte Trap-Handler erfasst werden.
Die Maskierungsmechanismen bzgl. Sonderzeichen sind unzulänglich.
Lokale und globale Variablen werden syntaktisch unterschiedlich behandelt.
Die Analyse von Kommandozeilen verläuft nicht immer fehlerfrei.
Die TENEX-C-Shell tcsh
Die TENEX-C-Shell entstand etwa Anfang der 90er Jahre des letzten Jahrhunderts als Erweiterung der csh. Sie enthält neben anderem eine Rechtschreibprüfung für Kommandonamen; weiterhin wurden einige Fehler der C-Shell ausgemerzt. Die tcsh wird standardmäßig mit Linux ausgeliefert und ist optional auch auf Unix-Systemen vorhanden. (TENEX war übrigens der Name eines auf DEC PDP-10 laufenden Netzwerkbetriebssystems.) Perl
Der Name Perl leitet sich von Practical Extraction and Reporting Language ab. Diese Sprache wurde von L. Wall entwickelt und steht seit Ende 1987 auf unterschiedlichen Systemplattformen (Unix, Linux, Windows, Mac-OS etc.) zur Verfügung. Man kann Perl als eine Kombination unterschiedlicher Sprachen und Unix-Tools wie nawk, C, sort, grep etc. auffassen. Neben den bereits skizzierten awk-, sed- und grep-Fähigkeiten - wenn auch in eigener Syntax - weist Perl in den derzeitigen Versionen 5.x u. a. folgende Besonderheiten auf:
Merkmale der objektorientieren Programmierung (OOP) ähnlich C++ und Java
Schnittstelle zu vielen Unix-Systemfunktionen (z. B. fork(), iocntl() etc.)
Anbindung an diverse relationale Datenbanksysteme; besonders oft verwendet man die Kombination Perl/MySQL.
Zugang zu umfangreichen Bibliotheken (use-Befehl)
Perl wird häufig in WWW-Anwendungen eingesetzt. Allerdings ist das nicht zwingend, denn einem Webserver ist es gleichgültig, in welcher Sprache ein CGI-Script formuliert ist. CGI bedeutet Common Gateway Interface und ist ein Protokoll zur Webprogrammierung. Immerhin ist Perl hierfür aber aufgrund seiner weiten Verbreitung und der mächtigen Textverarbeitungsmöglichkeiten gut geeignet. Gerade über diese Sprache gibt es inzwischen zahlreiche voluminöse Veröffentlichungen, und eine erschöpfende Darstellung würde den Rahmen des vorliegenden Buches sprengen. Aus diesem Grund werden in Kapitel 5 lediglich die wichtigsten Spracheigenschaften für die tägliche Arbeit dargestellt, wobei der Schwerpunkt auf der Einbettung relativ kurzer Perl-Konstrukte in Shell-Scripts liegt. Die Dateien zum Buch können Sie hier herunterladen .
Dieses Buch zeigt Ihnen, wie Sie als Systemadministrator, Programmierer oder Ingenieur unter Solaris und Linux Ihre Aufgaben mit Hilfe von Scripts schnell und effektiv lösen. Die Autoren führen Sie von den Grundlagen von nawk, Perl und der Korn-/Bourne-Shell bis hin zu fortgeschrittenen Praxisbeispielen aus Systemadministration, Statistik und Numerik.Sie lernen, kleinere Automatisierungsprobleme mit Hilfe von Textprozessoren, nawk und Shellscripts zu lösen und Perl in Shell-Scripts einzusetzen. Sie erfahren, welche Möglichkeiten Ihnen Scriptprogrammierung beim Dokumentieren, Testen, Erstellenund Pflegen von umfangreichen Softwarepaketen bietet. Die zahlreichen Beispiele bieten Ihnen wertvolle Tipps und Lösungen für Ihre eigene Arbeit die Spanne reicht von der einfachen Textanalyse über die Durchsatzmessung von Plattencontrollern bis hin zu High-Availability-Lösungen für Datensicherung und Netzwerküberwachung.