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. |