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.
Aus dem Inhalt:
- Bash, ZSH und die Linux-Toolbox
- PowerShell und CmdLets
- Python und Pip
- SSH, VSCode, Git, Curl: Werkzeugenkasten für moderne Scripts
- Scripts automatisch ausführen: Cron und Task Scheduler
- Backups automatisieren
- Bilder verarbeiten
- Monitoring: Logging-Dateien auswerten
- Web-Scraping und -Mining
- Scripting in der AWS-Cloud
- Automatisierte Builds mit Docker-Containern
Inhaltsverzeichnis
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