Comment exécuter un script Bash depuis Python
Bash est un shell Unix et un utilitaire de ligne de commande universellement utilisé dans les distributions GNU/Linux. L'utilisateur peut également exécuter la séquence de commandes bash à l'aide d'un simple fichier texte qui est un script bash. Parfois, les programmeurs doivent exécuter le script bash à partir d'un langage de programmation tel que Python pour l'automatisation des tâches, la manipulation de fichiers, le débogage et la compilation de code.
Cet article démontrera des approches pratiques pour exécuter un script/commande bash depuis du code Python. Cependant, l'article couvrira le plan suivant :
- Prérequis : Installer Python sur Linux
- Exécuter un script Bash en utilisant le module Subprocess
- Exécuter un script Bash en utilisant le module OS
- Conseil supplémentaire : Exécuter des commandes Bash dans Python
- Conclusion
Prérequis : Installer Python sur Linux
Python (un langage de script de haut niveau) est un langage de programmation à usage général largement utilisé dans le monde entier. Les programmeurs Python sont généralement tenus d'exécuter le script bash dans le programme pour automatiser les tâches. En général, python3 est préinstallé dans les distributions Linux. Dans le cas où Python n'est pas installé sur le système, installez-le en suivant les instructions ci-dessous.
Étape 1 : Mettre à jour et améliorer le dépôt APT
Tout d'abord, ouvrez le terminal Linux en utilisant la touche « CTRL+ALT+T » ou depuis le menu des activités. Ensuite, mettez à jour le dépôt APT de Linux :
sudo apt updateEnsuite, mettez à jour le dépôt en utilisant la commande « apt upgrade » :
sudo apt upgrade -yÉtape 2 : Installer Python
Maintenant, installez Python sur la machine en exécutant la commande apt install python3 avec des privilèges sudo :
sudo apt install python3Étape 3 : Vérification
Pour vérifier si Python est installé sur le système ou non, utilisez la commande « apt show » :
apt show python3La sortie ci-dessous montre que la version python3 “3.11.2” est installée sur le système :
Comment exécuter un script Bash en utilisant un module de sous-processus ?
Le module subprocess est le dernier module Python utilisé pour créer des processus, gérer les entrées/sorties des processus et les flux d'erreur, et obtenir des résultats de retour. Il remplace les anciens modules Python comme Os. Pour exécuter le script bash à partir du programme Python, suivez les instructions données.
Exemple 1 : Exécuter un script Bash en utilisant « subprocess.run »
Le processus “subprocess.run” est utilisé pour exécuter le sous-processus, donc utilisez la méthode run() du module “subprocess” pour exécuter le script bash existant. Pour exécuter le script bash en utilisant la méthode du sous-processus “run()”, suivez les instructions données.
Étape 1 : Créer un script Bash
Créez un nouveau fichier nommé "bash_script.sh" en utilisant l'éditeur de texte nano. Pour ce faire, exécutez la commande donnée :
sudo nano bash_script.shCommencez le fichier avec « #!/bin/bash » pour spécifier les commandes bash. Ensuite, ajoutez la commande requise dans le script bash. Par exemple, nous avons ajouté la commande « echo » :
#!/bin/bash
echo "Hello! Welcome to Linuxhint Tutorial"Pour enregistrer le script bash, utilisez la touche « CTRL+S », et pour quitter l'éditeur, appuyez sur « CTRL+X ».
Étape 2 : Créer un programme Python
Ensuite, créez le fichier de programme Python « filename.py » dans un éditeur de texte nano :
sudo nano demo.pyImportez le module subprocess, utilisez la méthode subprocess.run, passez le chemin vers le script bash en tant que paramètre et définissez la valeur du paramètre shell sur true :
import subprocess
print (subprocess.run([r"./bash_script.sh", "arguments"], shell=True))Ensuite, enregistrez le fichier et quittez l'éditeur nano.
Étape 3 : Rendre le script Bash exécutable
Pour exécuter le script bash dans le programme Python, l'utilisateur doit définir son autorisation comme exécutable. À cet effet, exécutez la commande ci-dessous :
sudo chmod +x bash_script.shÉtape 4 : Exécutez le programme Python
Exécutez le fichier Python pour exécuter le programme Python. À cet effet, utilisez la commande “python3 <filename.py> ”:
python3 demo.pyLa sortie montre que nous avons effectivement exécuté le script bash depuis le programme Python :
Exemple 2 : Exécuter un script Bash en utilisant « subprocess.call »
Le module sous-processus “call()” est utilisé pour exécuter des commandes et attendre que le traitement de la commande soit terminé. Dans l'exemple présenté ci-dessous, le même fichier bash est utilisé que celui utilisé dans l'exemple ci-dessus. Pour exécuter le script bash en utilisant la méthode “subprocess.call”, suivez les instructions données.
Étape 1 : Créer un programme Python
Créez et ouvrez le fichier du programme Python dans un éditeur de texte nano comme dans l'exemple ci-dessus. Ensuite, collez le code suivant dans le fichier :
import subprocess
print("Running Bash Script”)
subprocess.call(r"./bash_script.sh", shell=True)
print("Operation Successfull")Dans l'extrait ci-dessus, la méthode subprocess.call prend deux paramètres, l'un est le chemin du script bash, et le second est shell :
Étape 2 : Exécuter le programme Python
Après cela, exécutez le programme en utilisant la commande donnée :
python3 demo.pyLe résultat ci-dessous indique que nous avons exécuté avec succès le script bash en utilisant la méthode subprocess.call :
Comment exécuter un script Bash en utilisant un module OS ?
Le module OS de Python est utilisé pour interagir avec le système d'exploitation, principalement pour créer des dossiers, accéder au contenu des dossiers ou apporter des modifications. Pour accéder et exécuter le script bash depuis Python, le module python os peut être utilisé. Pour ce faire, suivez les étapes listées.
Étape 1 : Créer un programme Python
Dans cet exemple, le même script bash est utilisé que celui utilisé dans la section ci-dessus. Ensuite, collez le code suivant dans le fichier de programme Python :
import os
os.system('sh bash_script.sh')Étape 2 : Exécuter le programme Python
Exécutez le programme Python pour exécuter le script bash en utilisant le module os :
python3 demo.pyIci, vous pouvez voir que nous avons réussi à exécuter le script bash en utilisant le module Python « os » :
Les utilisateurs peuvent également exécuter des commandes bash dans le code Python. Pour obtenir un aperçu de l'exécution des commandes bash, suivez la section suivante.
Astuce Bonus : Exécuter des commandes Bash dans Python
Pour exécuter la commande bash directement dans le programme Python, suivez les exemples suivants.
Exemple 1 : Exécuter une commande Bash en Python en utilisant “subprocess.run ”
Exécutez la commande bash pour lister le répertoire et les fichiers ainsi que les détails des permissions en utilisant les commandes « ls » et « -l ». Ces commandes peuvent être exécutées en utilisant la méthode « subprocess.run » du module Python « subprocess » :
import subprocess
subprocess.run(["ls", "-l"])Maintenant, exécutez le fichier du programme Python :
python3 demo.pyVous pouvez voir que nous avons effectivement listé les fichiers du répertoire actuel en exécutant la commande Bash depuis le programme Python :
Exemple 2 : Exécuter une commande Bash en Python en utilisant “subprocess.Popen ”
La création et la gestion des processus du module subprocess se font par le biais de la classe de sous-processus Popen. Pour exécuter la commande bash à partir du programme python, collez le code ci-dessous dans le fichier du programme python :
import subprocess
popen_process = subprocess.Popen (["echo", "Welcome to Linuxhint Tutorial"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
output= popen_process.communicate( )
print(output)Dans l'extrait ci-dessus, la fonction communicate() interagira avec l'application du système d'exploitation et ouvrira le fichier :
Exécutez le fichier du programme pour exécuter la commande bash depuis Python :
python3 demo.pyLa sortie indique que le programme Python a exécuté la commande bash avec succès :
Exemple 3 : Exécuter une commande Bash en Python en utilisant “os.system ”
La méthode “os.system” du module python “os” peut également exécuter la commande bash pour directory. À cette fin, consultez le snippet ci-dessous qui listera les fichiers du répertoire actuel et imprimera une chaîne sur la console en utilisant des commandes bash :
import os
os.system("ls")
os.system("echo Successfully executed bash commands")Maintenant, exécutez le programme Python en utilisant « python3 <filename.py> » :
python3 demo.pyNous avons exécuté avec succès la commande bash directory depuis Python :
Nous avons abordé comment exécuter des scripts et des commandes bash depuis Python.
Conclusion
Pour exécuter un script bash depuis Python, les modules « os » et « subprocess » sont utilisés. Lors de l'exécution d'un script bash, le module « os » interagit avec le système d'exploitation et traite la sortie en conséquence. Cependant, le module « subprocess » prend en entrée et renvoie la sortie tout en traitant d'autres fonctions et méthodes comme run(), call() et Popen(). Cet article traite de l'exécution de scripts bash depuis Python.
















