Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m122:learningunits:lu08:module [2024/12/02 09:10] – angelegt msuter | modul:m122:learningunits:lu08:module [2024/12/16 08:51] (aktuell) – [Beispiel] msuter | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| Python stellt verschiedene Module und Methoden bereit, um Bash-Befehle auszuführen und deren Ergebnisse zu verarbeiten. Die gebräuchlichsten sind: | Python stellt verschiedene Module und Methoden bereit, um Bash-Befehle auszuführen und deren Ergebnisse zu verarbeiten. Die gebräuchlichsten sind: | ||
| - | 1. **`subprocess`-Modul**  | + | ===== subprocess  | 
| - |     | + | |
| + | Das '' | ||
| - | Beispiel: | + | ==== Beispiel  | 
| - |    < | + | |
| - |     | + | |
| - | # Einen Bash-Befehl ausführen | + | <code python> | 
| - |    result = subprocess.run([' | + | import  | 
| - |    #  | + | bash_command = 'cat / | 
| - |     | + | # Den Bash-Befehl ausführen | 
| - |    </ | + | try: | 
| + | result = subprocess.run( | ||
| + |         bash_command, | ||
| + |         shell=True,   | ||
| + |          | ||
| + |         text=True,  | ||
| + |         stdout=subprocess.PIPE,  | ||
| + |         stderr=subprocess.PIPE  | ||
| + | ) | ||
| + | return result | ||
| + | except subprocess.CalledProcessError as e: | ||
| + |      | ||
| + |      | ||
| + | sys.exit(1) | ||
| + | except Exception as ex: | ||
| + |     print(f' | ||
| + | sys.exit(1) | ||
| - | In diesem Beispiel führt Python den Befehl `ls -l` aus und gibt das Ergebnis zurück. | + | # Ausgabe anzeigen | 
| + | print(result.stdout) | ||
| + | </ | ||
| - | 2. **`os`-Modul**  | + | In diesem Beispiel führt Python den Befehl '' | 
| - |    Das `os`-Modul ermöglicht die Interaktion mit dem Betriebssystem. Für die Ausführung von Shell-Befehlen  | + | |
| - |     | + | ===== os-Modul ===== | 
| - | <code python> | + | |
| - |    import  | + | Das '' | 
| - | # Einen Bash-Befehl ausführen | + | ==== Beispiel ==== | 
| - |     | + | |
| - |    </ | + | |
| - |     | + | <code python> | 
| + | import  | ||
| + | import sys | ||
| - | 3. **`sh`-Modul  | + | def run_bash_command(command): | 
| - |    Für Benutzer, die eine einfachere Syntax bevorzugen, bietet das externe `sh`-Modul eine intuitive Möglichkeit,  | + |     """ | 
| + | Führt einen Bash-Befehl aus und behandelt Fehler. | ||
| - | Beispiel: | + | :param command: Der auszuführende Bash-Befehl als String | 
| - | <code python> | + |     """ | 
| - | import sh | + | try: | 
| + |         print(f' | ||
| + | # os.system gibt den Exit-Status des Befehls zurück | ||
| + |          | ||
| - | # Bash-Befehl ausführen | + | if exit_status != 0: | 
| - |     | + |             print(f' | 
| - |    </ | + | sys.exit(exit_status) | 
| + |          | ||
| + |             print(' | ||
| - | 4. **`pexpect`-Modul**   | + | except Exception as e: | 
| - |    Wenn Sie interaktive Bash-Sitzungen automatisieren möchten  | + |         print(f'Ein unerwarteter Fehler ist aufgetreten: | 
| + | sys.exit(1) | ||
| + | |||
| + | bash_command = ' | ||
| + | run_bash_command(bash_command) | ||
| + | </ | ||
| - |     | + | Beachten Sie, dass '' | 
| - |    < | + | |
| - |     | + | |
| - |     | + | ===== sh-Modul  | 
| - |     | + | |
| - |     | + | |
| - |    </ | + | |
| - | ### Sicherheitshinweise | + | Für Benutzer,  | 
| - | - **Eingabesanitierung**: | + | |
| - | - **Fehlerbehandlung**: Fügen  | + | ==== Beispiel ==== | 
| + | |||
| + | <code python> | ||
| + | import sh | ||
| + | import sys | ||
| + | |||
| + | def run_bash_command(command): | ||
| + |     """ | ||
| + | Führt einen Bash-Befehl aus und behandelt Fehler. | ||
| + | |||
| + | :param command: Der auszuführende Bash-Befehl als String | ||
| + |     """ | ||
| + | try: | ||
| + |         print(f" | ||
| + | # sh führt den Befehl aus und fängt automatisch Fehler ab | ||
| + | result = sh.Command(command.split()[0])(*command.split()[1:]) | ||
| + | print(result) | ||
| + | |||
| + | except sh.ErrorReturnCode as e: | ||
| + |         print(f' | ||
| + | sys.exit(e.exit_code) | ||
| + | |||
| + | except Exception as e: | ||
| + |         print(f' | ||
| + | sys.exit(1) | ||
| + | |||
| + | # Beispielbefehl | ||
| + | bash_command = 'ls -l / | ||
| + | run_bash_command(bash_command) | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== pexpect-Modul ===== | ||
| + | |||
| + | Wenn Sie interaktive Bash-Sitzungen automatisieren möchten (z. B. SSH, FTP oder andere Terminalsitzungen), | ||
| + | |||
| + | ==== Beispiel ==== | ||
| + | |||
| + | <code python> | ||
| + | import pexpect | ||
| + | |||
| + | child = pexpect.spawn(' | ||
| + | child.expect(' | ||
| + | child.sendline(' | ||
| + | </ | ||
| - | ### 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 Tools ermöglicht es Ihnen, das Beste aus beiden Welten – Python und Bash – zu nutzen. | ||