Scripting -  Michael Kofler

Scripting (eBook)

Fachbuch-Bestseller
das Praxisbuch für Administratoren und DevOps-Teams
eBook Download: EPUB
2023
492 Seiten
Rheinwerk Computing (Verlag)
978-3-8362-9426-3 (ISBN)
Systemvoraussetzungen
29,93 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Scripting ist die Kunst, Probleme in wenigen Zeilen zu lösen. Denn viele Aufgaben in der IT erfordern keine komplexen Lösungen in einer Hochsprache - oft reichen ein paar Zeilen Python-, Bash- oder PowerShell-Code.

Michael Kofler zeigt Ihnen in diesem Praxisbuch, wie Sie die Macht der Scripting-Umgebungen nutzen. Anhand zahlreicher Praxisbeispiele erfahren Sie, wie Sie Aufgaben automatisieren und wie Ihnen Shell- oder Pythonscripts viel Arbeit abnehmen können. Mit dabei ist ein Überblick über moderne Shell-Werkzeuge und IDEs: Visual Studio Code, Git, SSH und mehr.

Für alle Systeme
Egal, ob Sie mit Linux, Windows oder dem Mac arbeiten, ob Sie lokale Systeme administrieren oder per SSH auf die Cloud zugreifen: Crashkurse für die Bash/ZSH, PowerShell und Python machen Sie fit fürs Scripting.

Keep it simple, Stupid!
Wenn Sie schon länger in der IT arbeiten, wissen Sie, dass nichts über das KISS-Prinzip geht. Einfache Scripts zerlegen komplexe Probleme in kleine Schritte und erleichtern die Arbeit in der Systemadministration oder der Softwareentwicklung.

Musterlösungen und Beispielscripts
Möchten Sie Markdown-Dokumente automatisiert erstellen oder Script-gestützte Sicherungen durchführen? Webinhalte scrapen oder Ihre Lösungen in Docker-Containern weitergeben? Für viele Szenarien finden Sie Musterlösungen, die Sie als Grundlage für eigene Scripts nutzen können.

Michael Kofler hat Telematik an der TU Graz studiert und ist der renommierteste Fachbuchautor im deutschsprachigen Raum. Er behandelt von Linux über Swift bis zur IT-Security alles, was Sie in der Systemadministration oder der Softwareentwicklung wissen müssen. Zu seinen Themengebieten zählen außerdem auch Python, Swift, Java und der Raspberry Pi. Er ist Entwickler, berät Firmen und arbeitet als Lehrbeauftragter. In diesem Buch zeigt er Ihnen, wie Sie clevere und elegante Scripte erstellen.

Vorwort ... 11
TEIL I. Scripting-Sprachen ... 15
1. Scripting: Do one thing ... ... 17

1.1 ... Was heißt Scripting? ... 17
1.2 ... Script-Sprachen ... 20
1.3 ... Die Qual der Wahl ... 24

2. Zehn mal zehn Zeilen ... 27

2.1 ... Markdown-Rechtschreibkorrektur (Bash) ... 27
2.2 ... Bilder nach Aufnahmedatum sortieren (PowerShell) ... 28
2.3 ... JSON-Datei in das XML-Format umwandeln (Python) ... 29
2.4 ... Tägliches Server-Backup (Bash) ... 30
2.5 ... Web Scraping (Python) ... 31
2.6 ... Wetterdaten protokollieren (Python) ... 32
2.7 ... Hyper-V-Aufräumaktion (PowerShell) ... 33
2.8 ... Statistische Auswertung einer Logging-Datei (Bash) ... 34
2.9 ... Datei-Upload in die Cloud (PowerShell) ... 35
2.10 ... Virtuelle Maschinen klonen (Bash) ... 35

3. Bash und Zsh ... 37

3.1 ... Terminal, Shell und Bash ... 37
3.2 ... Installation ... 38
3.3 ... Kommandos interaktiv ausführen ... 42
3.4 ... Zsh als Bash-Alternative ... 45
3.5 ... Das erste Bash-Script ... 47
3.6 ... Kommandos ausführen ... 53
3.7 ... Standardeingabe und Standardausgabe ... 56
3.8 ... Globbing, Brace Extension, Umgang mit Datei- und Verzeichnisnamen ... 59
3.9 ... Variablen ... 63
3.10 ... Zeichenketten ... 69
3.11 ... Verzweigungen ... 77
3.12 ... Schleifen ... 83
3.13 ... Funktionen ... 87
3.14 ... Umgang mit Fehlern ... 88

4. PowerShell ... 91

4.1 ... Installation ... 91
4.2 ... Das Windows-Terminal ... 96
4.3 ... Aufruf von CmdLets und Funktionen ... 98
4.4 ... Kommandos kombinieren ... 105
4.5 ... Das erste Script ... 108
4.6 ... Variablen, Zeichenketten und Objekte ... 114
4.7 ... Arrays und Hashtables ... 125
4.8 ... Ausgabeumleitung ... 128
4.9 ... Schleifen ... 132
4.10 ... Verzweigungen ... 135
4.11 ... Funktionen und Parameter ... 137
4.12 ... Module ... 142
4.13 ... Fehlerabsicherung ... 145

5. Python ... 149

5.1 ... Python installieren ... 150
5.2 ... Python in einem Terminalfenster kennenlernen ... 152
5.3 ... Eigene Scripts programmieren ... 153
5.4 ... Elementare Syntaxregeln ... 155
5.5 ... Zahlen ... 157
5.6 ... Zeichenketten ... 159
5.7 ... Listen ... 166
5.8 ... Tupel, Sets und Dictionaries ... 169
5.9 ... Variablen ... 172
5.10 ... Operatoren ... 176
5.11 ... Verzweigungen (if) ... 178
5.12 ... Schleifen (for und while) ... 180
5.13 ... Funktionen ... 186
5.14 ... Textdateien verarbeiten ... 190
5.15 ... Fehlerabsicherung ... 193
5.16 ... Systemfunktionen ... 194
5.17 ... Module ... 197
5.18 ... Zusatzmodule installieren mit »pip« ... 199

TEIL II. Arbeitstechniken und Werkzeuge ... 205
6. Linux-Toolbox ... 207

6.1 ... Verzeichnisse und Dateien ... 208
6.2 ... Dateien suchen ... 209
6.3 ... Dateien komprimieren und archivieren ... 211
6.4 ... Arbeiten mit root-Rechten ... 213
6.5 ... Prozesse verwalten ... 215
6.6 ... Software-Installation ... 219
6.7 ... Sonstige Kommandos ... 220

7. CmdLets für die PowerShell ... 223

7.1 ... Verzeichnisse und Dateien ... 223
7.2 ... Dateien suchen ... 227
7.3 ... Dateien komprimieren und archivieren ... 231
7.4 ... Prozessverwaltung ... 232
7.5 ... Registrierdatenbank und Systeminformationen ... 236
7.6 ... CmdLet-Ergebnisse verarbeiten ... 239
7.7 ... Sonstige CmdLets ... 244
7.8 ... Zusatzmodule installieren ... 244
7.9 ... Standard-Aliasse ... 247

8. Textauswertung mit Filtern und Pipes ... 249

8.1 ... grep, sort, cut und uniq ... 250
8.2 ... Beispiel: Automatische Coronazahlenauswertung ... 257
8.3 ... Beispiel: ping-Auswertung ... 259
8.4 ... Beispiel: Apache-Log-Analyse ... 260
8.5 ... CSV-Dateien ... 264

9. Reguläre Muster ... 269

9.1 ... Syntaxregeln für reguläre Ausdrücke ... 270
9.2 ... Gruppen und Alternativen ... 272
9.3 ... Reguläre Muster in der Bash (grep, sed) ... 278
9.4 ... Reguläre Muster in der PowerShell ... 283
9.5 ... Reguläre Muster in Python (re-Modul) ... 287

10. JSON, XML und INI ... 291

10.1 ... JSON in der PowerShell ... 291
10.2 ... JSON und Python ... 295
10.3 ... JSON in der Bash ... 299
10.4 ... XML in der PowerShell ... 302
10.5 ... XML und Python ... 306
10.6 ... XML in der Bash ... 310
10.7 ... INI-Dateien ... 312

11. Scripts automatisch ausführen ... 315

11.1 ... Cron ... 315
11.2 ... Beispiel: Webserver-Monitoring ... 319
11.3 ... Windows Task Scheduler ... 321
11.4 ... Beispiel: Währungskurse speichern ... 326
11.5 ... Änderungen im Dateisystem verfolgen ... 327

12. SSH ... 331

12.1 ... SSH-Client und -Server installieren ... 332
12.2 ... Mit SSH arbeiten ... 335
12.3 ... scp und rsync ... 340
12.4 ... SSH-Authentifizierung mit Schlüsseln ... 342
12.5 ... Beispiel: Bilder-Upload auf einen Linux-Webserver ... 345
12.6 ... Beispiel: Auswertung virtueller Maschinen ... 348

13. Visual Studio Code ... 351

13.1 ... Einführung ... 351
13.2 ... Sprachspezifische VSCode-Erweiterungen ... 353
13.3 ... Remote-SSH-Erweiterung ... 355

14. Git ... 359

14.1 ... Git-Crashkurs ... 360
14.2 ... Der richtige Umgang mit Einstellungen und Passwörtern ... 368
14.3 ... Git-Automatisierung ... 371
14.4 ... Git Hooks ... 374

TEIL III. Anwendungen und Beispiele ... 377
15. Backups ... 379

15.1 ... Verzeichnisse auf externen Datenträger synchronisieren ... 379
15.2 ... WordPress-Backup ... 384
15.3 ... SQL-Server-Backup ... 387

16. Bildverarbeitung ... 389

16.1 ... Bilddateien manipulieren ... 389
16.2 ... Fotos nach Aufnahmedatum sortieren ... 394
16.3 ... EXIF-Metadaten in SQL-Kommandos umwandeln ... 397

17. Web Scraping ... 403

17.1 ... Websites mit wget herunterladen ... 405
17.2 ... Web Scraping mit regulären Mustern ... 408
17.3 ... Web Scraping mit Beautiful Soup ... 409
17.4 ... Web Scraping mit Requests-HTML ... 414
17.5 ... Web Scraping mit der PowerShell ... 417

18. REST-APIs nutzen ... 419

18.1 ... curl und wget ... 420
18.2 ... REST-APIs in der PowerShell nutzen ... 425
18.3 ... Beispiel: Aktuelles Wetter ermitteln ... 428
18.4 ... REST-APIs in Python nutzen ... 429
18.5 ... Beispiel: Strompreise ermitteln und grafisch darstellen ... 430

19. Datenbanken ... 435

19.1 ... Datenbanken aktualisieren und warten ... 436
19.2 ... Neuen Kunden-Account einrichten ... 437
19.3 ... EXIF-Metadaten in einer Datenbank speichern ... 440
19.4 ... JSON-Daten in eine Tabelle importieren ... 444

20. Scripting in der Cloud ... 447

20.1 ... AWS CLI ... 447
20.2 ... Beispiel: Verschlüsselte Backup-Dateien in die Cloud hochladen ... 452
20.3 ... AWS-PowerShell-Modul ... 454
20.4 ... Beispiel: GroT1ss e Dateien einer Webseite in die Cloud auslagern ... 457

21. Virtuelle Maschinen ... 461

21.1 ... Virtuelle Maschinen einrichten und ausführen (KVM) ... 461
21.2 ... Netzwerkkonfiguration automatisieren (KVM) ... 464
21.3 ... Hyper-V steuern ... 467

22. Docker und Scripting ... 473

22.1 ... Beispiel: EXIF-Sorter als Docker-Image ... 474
22.2 ... Beispiel: Markdown/Pandoc-Umgebung ... 477

Index ... 485

1.2 Script-Sprachen


Rein formal unterscheiden sich Script-Sprachen von anderen, »höheren« Programmiersprachen dadurch, dass der Code interpretiert wird. Der Code wird also in einer Textdatei formuliert und dann direkt durch die Bash, die PowerShell oder den Python-Interpreter ausgeführt. Der Code braucht nicht vorher kompiliert (also in eine binäre Darstellung umgewandelt) werden.

Dieses Konzept hat den Vorteil, dass Scripts ohne lange Vorbereitungsarbeiten sofort ausgeführt werden können. Das beschleunigt den Entwicklungsprozess.

Die Verwendung eines Interpreters hat allerdings den Nachteil, dass Scripts zumeist etwas langsamer laufen als kompilierte Programme. Deswegen ist eine Script-Sprache selten die ideale Wahl, um rechenintensive Algorithmen zu entwickeln. Da viele Scripts überwiegend aus Aufrufen anderer Kommandos bestehen, spielt der Effizienzverlust durch den fehlenden Compiler gar keine Rolle.

Als »klassische« Script-Sprachen gelten sämtliche Linux-Shells, also z. B. Bourne Shell, die Korn Shell, Bash und Zsh. Eine Shell ist eigentlich ein Kommandointerpreter, also ein Programm, das Kommandos entgegennimmt und diese ausführt. Werden mehrere solche Kommandos in einer Textdatei gespeichert, entsteht die ursprüngliche Form eines Scripts.

Im Laufe der Zeit wurden unzählige Script-Sprachen entwickelt, die mehr syntaktische Möglichkeiten als traditionelle Shells boten und oft für spezifische Aufgaben optimiert wurden. Dazu zählen beispielsweise JavaScript, Python, PHP und Tcl.

In der Windows-Welt übernahm ursprünglich das unsägliche Programm cmd.exe die Rolle der Shell. Darauf aufbauende *.bat-Dateien sind trotz der äußerst bescheidenen Scripting-Möglichkeiten bis heute im Einsatz. Es folgten VBScript, die für den Office-Einsatz optimierte Sprache VBA und schließlich die PowerShell. Erst damit hatte Microsoft Erfolg: Die PowerShell gilt heute als die Sprache, wenn es darum geht, große Windows-Netzwerkinstallationen zu warten und zu administrieren.

Compiler für Script-Sprachen

Das in der Vergangenheit etablierte Kriterium Interpreter/Compiler zur Unterscheidung zwischen Script- und anderen Sprachen ist heute obsolet. Für viele Sprachen, deren Code anfänglich durch einen Interpreter ausgeführt wurde, gibt es mittlerweile Compiler. Oft handelt es sich um Just-in-Time-Compiler, die den Code unmittelbar vor der Ausführung und unbemerkt durch die Anwenderinnen und Anwender kompilieren. Das trifft unter anderem für JavaScript, PHP und Python zu.

Bash und Zsh


Es liegt auf der Hand, dass ich in diesem Buch nicht auf alle populären Script-Sprachen eingehen kann. Ich habe mich vielmehr auf drei (mit der Zsh vier) Sprachen fokussiert, die für administrative Aufgaben sowie im DevOps-Umfeld am wichtigsten sind. Diese Sprachen möchte ich Ihnen im Folgenden kurz vorstellen.

Der Name Bash ist eine Abkürzung für Bourne Again Shell. Die Bourne Shell war vor mehr als 30 Jahren unter Unix sehr beliebt. Allerdings stand dieses Programm nicht unter einer Open-Source-Lizenz zur Verfügung. Das führte zur Entwicklung der weitgehend kompatiblen Bash, die sich später als Standard-Shell bei den meisten Linux-Distributionen durchsetzte.

Wenn im Linux-Umfeld ohne weitere Erläuterungen von Scripting die Rede ist, dann ist als Scripting-Sprache nahezu immer die Bash gemeint. Egal, ob Server-Prozesse gestartet, Netzwerkverbindungen eingerichtet oder Firewall-Regeln verändert werden sollen – ganz häufig kommen dazu bereits auf Betriebssystemebene Bash-Scripts zum Einsatz. Daher ist es naheliegend, auch eigene Aufgaben mit der Bash zu erledigen.

Die weite Verbreitung der Bash lässt manchmal darüber hinwegsehen, dass die Wurzeln und die Syntax der Bash sehr alt sind. Dementsprechend ist die Syntax der Sprache mitunter inkonsistent, ab und zu auch einfach grauenhaft. Statt einfacher Funktionen müssen unzählige Sonderzeichen herhalten, um ganz triviale Aufgaben zu erledigen (Zeichenketten bearbeiten, Berechnungen durchführen). Neben Zeichenketten und Arrays gibt es keine weiteren Datentypen. Objektorientierung ist in der Bash sowieso ein Fremdwort.

Auf der Plusseite steht die schier grenzenlose Auswahl von Unix-Tools, die in Scripts genutzt und kombiniert werden können. Die Stärke der Bash liegt also nicht ihren sprachlichen Möglichkeiten, sondern bei den Kommandos, die Sie in Scripts unkompliziert aufrufen können. (Und Sie wissen ja schon: Diese Kommandos wurden unter dem Motto Do One Thing … entwickelt.)

Einschränkend muss ich noch erwähnen, dass es Einsteigerinnen und Einsteigern schwerfällt, sich in der Bash- und Linux-Kommandowelt zu orientieren. Zwar ist (fast) jedes Kommando für sich gut dokumentiert, aber es gibt keine zentrale Übersicht. (Das begründet den Erfolg meines Buchs »Die Linux-Kommandoreferenz«, das im Rheinwerk Verlag bereits mehrere Auflagen erlebt hat.)

Bash versus Zsh

Die Zsh ist weitgehend kompatibel zur Bash. Für die Script-Programmierung sind die Unterschiede nur minimal, und natürlich können Sie in beiden Shells die gleichen Kommandos aufrufen. Bei der interaktiven Verwendung zeichnet sich die Zsh aber durch viele Vorteile und bessere Erweiterungsmöglichkeiten aus. Deswegen gewinnt die Zsh unter Linux immer mehr Fans und wird von manchen Distributionen sogar schon als Default-Shell verwendet. (Bei anderen Distributionen kann die Zsh mit wenigen Handgriffen installiert werden.)

macOS hat 2019 einen Wechsel von der Bash auf die Zsh vollzogen. Die Motivation von Apple lag weniger bei den technischen Vorzügen, sondern hatte vielmehr mit Lizenzfragen zu tun: Aktuelle Versionen der Bash verwenden die Lizenz GPL 3, die Apple vermeidet. Die Zsh hat dagegen eine liberalere, BSD-artige Lizenz.

Soweit es dieses Buch betrifft, spielt es keine große Rolle, ob Sie die Bash oder die Zsh bevorzugen. Einen kurzen Überblick der wichtigsten Vor- und Nachteile gebe ich im Abschnitt 3.4, »Zsh als Bash-Alternative«.

PowerShell


Microsoft hat lange Zeit auf grafische Benutzeroberflächen gesetzt – nicht nur im Office-Bereich, sondern auch zur Server-Administration. Auf den ersten Blick schien das ein Vorteil im Vergleich zu Linux zu sein: Ein paar Mausklicks erschließen sich leichter als dubiose Konfigurationsdateien.

Für Administratorinnen und Administratoren hat sich das zum Albtraum entwickelt: Das Hauptproblem besteht darin, dass die Konfigurationsarbeit nicht skaliert. Zehn Server zu administrieren, dauert per Mausklick eben zehn Mal länger als bei einem Server. Anders als unter Linux gab es kaum Möglichkeiten, derartige Arbeiten zu automatisieren.

Das änderte sich mit der Präsentation der PowerShell 2006. Microsoft hat die Gelegenheit des Neuanfangs gut genutzt: Im Vergleich zur Bash punktet die PowerShell mit einer deutlich logischeren Syntax. Das technisch interessanteste Feature der PowerShell besteht darin, dass der Datentransport von einem Kommando zum nächsten nicht in Textform erfolgt, sondern dass dabei vollwertige Objekte übertragen werden. Das ermöglicht weitreichende Verarbeitungsmöglichkeiten durch das Auslesen von Eigenschaften und den Aufruf von Methoden. Der objektorientierte Ansatz funktioniert allerdings nur mit speziell für die PowerShell optimierten Kommandos, die Microsoft CmdLets nennt. (Der Aufruf traditioneller Kommandos ist auch möglich, unterliegt aber Einschränkungen.)

Ein weiterer Erfolgsfaktor der PowerShell ist im Umfeld zu suchen: Microsoft hat begonnen, viele Windows-Komponenten und Server-Dienste vollständig durch CmdLets konfigurierbar zu machen. Während früher maximal Grundeinstellungen per Script verändert werden konnten, andere Optionen aber doch nur per Mausklick erreichbar waren, gilt jetzt: PowerShell first.

Neben den standardmäßig ausgelieferten CmdLets gibt es im Internet unzählige Erweiterungsmodule mit CmdLets für bestimmte Aufgaben. Rund um die PowerShell ist eine aktive Community entstanden. Seit 2018 ist die PowerShell zudem ein Open-Source-Projekt und kann auch unter Linux und macOS installiert werden. Allerdings ist das CmdLet-Angebot außerhalb der Windows-Welt deutlich kleiner. Typische administrative Aufgaben (Benutzer einrichten, Netzwerkkonfiguration ändern usw.) funktionieren nur unter Windows. Plattformübergreifend lässt sich die PowerShell nur für Aufgaben nutzen, die nicht Windows-spezifisch sind.

Python


Die erste Python-Version wurde 1991 veröffentlicht. Damit ist Python beinahe so alt wie die Bash, deren erste Version 1989 erschien. Aber anders als der Bash merkt man Python das Alter kaum an: Python zeichnet sich durch eine elegante, gut durchdachte Syntax aus, die bis heute Maßstäbe setzt.

Python ist insofern eine Script-Sprache, als der Code ursprünglich von einem Interpreter ausgeführt wurde. Bei aktuellen Versionen wird der Code aus Performance-Gründen allerdings zuerst in ein binäres Zwischenformat (den sogenannten Byte-Code) kompiliert. Bei der Anwendung von Python bemerken Sie davon nichts. Anders formuliert: Python verhält sich wie eine...

Erscheint lt. Verlag 5.7.2023
Zusatzinfo Illustrationen
Verlagsort Bonn
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Netzwerke
Mathematik / Informatik Informatik Software Entwicklung
Mathematik / Informatik Informatik Web / Internet
Schlagworte Admin • Anleitung • Bash • Buch • Coding • DevOps-Team • Entwickler • Interpreter • Lernen • python-skript • Scripting programmierung • Shell • Skriptsprache • Tipps • Tricks • Visual Studio Code • Wissen
ISBN-10 3-8362-9426-5 / 3836294265
ISBN-13 978-3-8362-9426-3 / 9783836294263
Haben Sie eine Frage zum Produkt?
EPUBEPUB (Wasserzeichen)
Größe: 3,0 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Das umfassende Handbuch

von Martin Linten; Axel Schemberg; Kai Surendorf

eBook Download (2023)
Rheinwerk Computing (Verlag)
22,43