Cet article explore les techniques de contrôle et d’interaction avec les terminaux Linux en utilisant Python. Nous aborderons diverses méthodes, de l’exécution simple de commandes à des scénarios plus avancés impliquant des sessions de terminal persistantes.
Table des matières
- Ouvrir un nouveau terminal et exécuter des commandes
- Vérification de la version Python
- Maintenir les terminaux actifs
- Techniques avancées
subprocess
- Conclusion
Ouvrir un nouveau terminal et exécuter des commandes
La façon la plus simple d’ouvrir un nouveau terminal et d’exécuter des commandes est d’utiliser le module subprocess
. Cela implique de lancer un nouveau processus d’émulateur de terminal et de passer la commande comme argument. La commande spécifique pour lancer un terminal varie en fonction de votre environnement de bureau (par exemple, gnome-terminal
, konsole
, xterm
).
import subprocess
def run_command_in_new_terminal(command, terminal_command="gnome-terminal"):
"""Ouvre un nouveau terminal et exécute la commande spécifiée.
Args:
command: La commande à exécuter.
terminal_command: La commande pour lancer l'émulateur de terminal. Par défaut, 'gnome-terminal'.
"""
try:
subprocess.run([terminal_command, '--', 'bash', '-c', command + ' ; exec bash']) #Maintient le terminal ouvert
print(f"Commande '{command}' exécutée dans un nouveau terminal.")
except FileNotFoundError:
print(f"Erreur : {terminal_command} non trouvé. Veuillez vous assurer qu'il est installé et dans votre PATH.")
except subprocess.CalledProcessError as e:
print(f"Erreur lors de l'exécution de la commande : {e}")
run_command_in_new_terminal("ls -l")
run_command_in_new_terminal("top", terminal_command="xterm") # Exemple avec xterm
Cette version améliorée gère différents émulateurs de terminal et utilise exec bash
pour maintenir le terminal ouvert une fois la commande terminée.
Vérification de la version Python
Déterminer la version Python est simple en utilisant le module sys
:
import sys
def get_python_version():
"""Affiche la version Python actuelle."""
print(f"Version Python : {sys.version}")
get_python_version()
Maintenir les terminaux actifs
Pour maintenir un terminal ouvert après l’exécution d’une commande, assurez-vous que votre commande s’exécute indéfiniment ou utilise un mécanisme pour maintenir le shell actif. Par exemple, au lieu d’une commande unique comme ls -l
, utilisez une commande qui produit continuellement des données, comme tail -f /var/log/syslog
, ou incluez une commande qui maintient le shell en cours d’exécution (comme indiqué dans le premier exemple).
Techniques avancées subprocess
Pour des interactions plus complexes, subprocess.Popen()
offre un contrôle plus précis. Il permet une communication bidirectionnelle avec le processus créé via ses flux d’entrée, de sortie et d’erreur standard. Cependant, la manipulation directe d’un terminal déjà ouvert nécessite des techniques plus avancées, potentiellement impliquant des pseudo-terminaux (pty).
Conclusion
Cet article a présenté diverses méthodes de gestion des terminaux Linux via Python, allant de l’exécution simple de commandes à un contrôle plus sophistiqué. Le module subprocess
est central à ces tâches. N’oubliez pas de choisir l’émulateur de terminal approprié et d’adapter les commandes à votre environnement spécifique. Pour des scénarios très interactifs ou un contrôle complexe, explorez le module pty
pour une manipulation plus avancée des terminaux.