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 . . . 11TEIL 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« . . . 199TEIL 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) . . . 28710. 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 . . . 31211. 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 . . . 32712. 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 . . . 34813. Visual Studio Code . . . 351 13. 1 . . . Einführung . . . 351 13. 2 . . . Sprachspezifische VSCode-Erweiterungen . . . 353 13. 3 . . . Remote-SSH-Erweiterung . . . 35514. 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 . . . 374TEIL III. Anwendungen und Beispiele . . . 37715. Backups . . . 379 15. 1 . . . Verzeichnisse auf externen Datenträger synchronisieren . . . 379 15. 2 . . . WordPress-Backup . . . 384 15. 3 . . . SQL-Server-Backup . . . 38716. Bildverarbeitung . . . 389 16. 1 . . . Bilddateien manipulieren . . . 389 16. 2 . . . Fotos nach Aufnahmedatum sortieren . . . 394 16. 3 . . . EXIF-Metadaten in SQL-Kommandos umwandeln . . . 39717. 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 . . . 41718. 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 . . . 43019. 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 . . . 44420. 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 . . . 45721. Virtuelle Maschinen . . . 461 21. 1 . . . Virtuelle Maschinen einrichten und ausführen (KVM) . . . 461 21. 2 . . . Netzwerkkonfiguration automatisieren (KVM) . . . 464 21. 3 . . . Hyper-V steuern . . . 46722. Docker und Scripting . . . 473 22. 1 . . . Beispiel: EXIF-Sorter als Docker-Image . . . 474 22. 2 . . . Beispiel: Markdown/Pandoc-Umgebung . . . 477 Index . . . 485