Linux Automation

Maîtriser la ligne de commande Linux avec Python

Spread the love

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

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *