Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m122:learningunits:lu08:einfuehrung [2024/12/02 09:09] – angelegt msuter | modul:m122:learningunits:lu08:einfuehrung [2024/12/09 10:31] (aktuell) – msuter | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| - | Python ist nicht nur eine vielseitige Programmiersprache für Anwendungen, | + | Python ist nicht nur eine vielseitige Programmiersprache für Anwendungen, |
| + | Diese Funktionalität ist besonders nützlich, wenn Sie Skripte schreiben, die Prozesse automatisieren, | ||
| ===== Warum Bash-Befehle in Python nutzen? ===== | ===== Warum Bash-Befehle in Python nutzen? ===== | ||
| Die Integration von Bash-Befehlen in Python bietet die Möglichkeit: | Die Integration von Bash-Befehlen in Python bietet die Möglichkeit: | ||
| - | - vorhandene Bash-Skripte und Befehle wiederzuverwenden, | + | * vorhandene Bash-Skripte und Befehle wiederzuverwenden, |
| - | - komplexe Workflows zu automatisieren, | + | |
| - | - sowohl die Vorteile von Python (Lesbarkeit, | + | |
| - | Python stellt verschiedene Module und Methoden bereit, um Bash-Befehle auszuführen und deren Ergebnisse zu verarbeiten. Die gebräuchlichsten sind: | ||
| - | 1. **`subprocess`-Modul** | + | ===== Sicherheitshinweise ===== |
| - | Das `subprocess`-Modul ist die empfohlene Methode, um externe Prozesse auszuführen. Es bietet umfangreiche Kontrolle über die Ausführung von Befehlen und die Verarbeitung ihrer Ausgaben. | + | ==== Eingaben validieren ==== |
| + | Vermeiden Sie die direkte Übergabe von Benutzereingaben an Shell-Befehle, um Sicherheitsrisiken wie Code-Injection zu verhindern. | ||
| - | Beispiel: | + | **Beispiel:** |
| - | < | + | |
| - | | + | |
| - | # Einen Bash-Befehl ausführen | + | <code python> |
| - | result = subprocess.run([' | + | # Unsicher: Benutzer kann Schadcode einschleusen |
| + | os.system(f" | ||
| + | </ | ||
| - | # Ausgabe anzeigen | + | **Stattdessen: |
| - | print(result.stdout) | + | <code python> |
| - | | + | subprocess.run([' |
| + | </ | ||
| - | In diesem Beispiel führt Python den Befehl `ls -l` aus und gibt das Ergebnis zurück. | + | ==== Fehlerbehandlung ==== |
| + | Überprüfen Sie Rückgabecodes | ||
| - | 2. **`os`-Modul** | + | <code python> |
| - | Das `os`-Modul ermöglicht die Interaktion mit dem Betriebssystem. Für die Ausführung von Shell-Befehlen gibt es die Funktion `os.system()`. Sie ist jedoch weniger flexibel und wird oft zugunsten von `subprocess` vermieden. | + | import |
| - | | + | # Bash-Befehl, |
| - | <code python> | + | command = "ls -l /" |
| - | | + | |
| - | # | + | try: |
| - | os.system(' | + | # |
| - | | + | result = subprocess.run( |
| + | command, | ||
| + | | ||
| + | check=True, | ||
| + | text=True, | ||
| + | stdout=subprocess.PIPE, | ||
| + | stderr=subprocess.PIPE | ||
| + | ) | ||
| + | # Ausgabe des Ergebnisses | ||
| + | print(" | ||
| + | print(" | ||
| + | print("Ausgabe:" | ||
| + | print(result.stdout) | ||
| + | except subprocess.CalledProcessError as e: | ||
| + | # Fehlerbehandlung, | ||
| + | print(" | ||
| + | | ||
| + | print(" | ||
| + | print(e.stderr) | ||
| + | except Exception as ex: | ||
| + | # Generelle Fehlerbehandlung | ||
| + | print(f" | ||
| + | </ | ||
| - | | + | ===== Fazit ===== |
| - | 3. **`sh`-Modul (externe Bibliothek)** | + | Python bietet flexible Werkzeuge zur Integration von Bash-Befehlen und ist eine ideale Wahl für die Entwicklung leistungsstarker Automatisierungs- und Verwaltungsskripte. |
| - | Für Benutzer, die eine einfachere Syntax bevorzugen, bietet das externe `sh`-Modul eine intuitive Möglichkeit, | + | Das '' |
| - | + | Durch das Verständnis dieser | |
| - | | + | |
| - | < | + | |
| - | | + | |
| - | + | ||
| - | # Bash-Befehl ausführen | + | |
| - | | + | |
| - | </ | + | |
| - | + | ||
| - | 4. **`pexpect`-Modul** | + | |
| - | Wenn Sie interaktive Bash-Sitzungen automatisieren möchten (z. B. SSH, FTP oder andere Terminalsitzungen), | + | |
| - | + | ||
| - | | + | |
| - | < | + | |
| - | | + | |
| - | + | ||
| - | child = pexpect.spawn(' | + | |
| - | | + | |
| - | | + | |
| - | </ | + | |
| - | + | ||
| - | ### Sicherheitshinweise | + | |
| - | - **Eingabesanitierung**: | + | |
| - | - **Fehlerbehandlung**: | + | |
| - | + | ||
| - | ### Fazit | + | |
| - | Python bietet flexible Werkzeuge zur Integration von Bash-Befehlen und ist eine ideale Wahl für die Entwicklung leistungsstarker Automatisierungs- und Verwaltungsskripte. Das Verständnis dieser | + | |