Comment combiner Bash et Python dans un script Python ?

Pour programmer des tâches récurrentes automatiques sur une machine virtuelle, il est pratique de configurer des cronjobs (dans une crontable) qui vont lancer automatiquement l’execution d’un script python (via une commande bash de type python3 #chemin-acces-script-python#).

Le script python peut avoir besoin d’intéragir avec Bash pour plusieurs raisons :

  • Pour accéder à des informations de la machine virtuelle avec une commande Bash
  • Pour gérer des fichiers/données stockées sur la machine virtuelle avec une commande Bash

Pour cela, il est possible avec Python d’utiliser la librairie subprocess et la librairie sys pour combiner la puissance de Python avec celle de Bash. La logique est de récupérer dans Python le résultat d’une commande Bash pour pouvoir ensuite le manipuler facilement avec Python. Et inversement, on souhaite parfois profiter de la puissance/facilité d’une commande Bash en demandant à Python de l’executer.

Pour accéder à des informations de la machine virtuelle avec une commande Bash :

import subprocess
import sys

# Commande Bash pour connaitre la version de l OS sur la machine virtuelle 
# On utilise la methode subprocess.check_output(). Et on décode le resultat pour qu'il soit facilement manipulable par Python (pas langage binaire).
# Le résultat est mis dans la variable co pour la manipuler ensuite avec du langage Python
cmd = ['cat', '/etc/issue']
co = subprocess.check_output(cmd).decode(sys.stdout.encoding).strip()

Pour éxécuter une commande Bash (utile pour gérer des fichiers/données stockées sur la machine virtuelle) :

#Exemple avec une commande Bash qui affiche la version OS (recupérée avec la variable co) dans la console de la machine virtuelle 
cmd = "echo " + "Version OS : " + co 
sp = subprocess.Popen(cmd,shell=True)
0.00 avg. rating (0% score) - 0 votes

Laissez un commentaire

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