Si sleep.sh
a tout le toutim #!/bin/sh
et qu'il a les droits d'accès aux fichiers appropriés. chmod u+rx sleep.sh
pour être sûr et c'est dans $PATH
alors votre code devrait fonctionner tel quel :
import subprocess
rc = subprocess.call("sleep.sh")
Si le script n'est pas dans le PATH alors spécifiez le chemin complet vers lui, par exemple, s'il est dans le répertoire de travail actuel :
from subprocess import call
rc = call("./sleep.sh")
Si le script n'a pas de shebang alors vous devez spécifier shell=True
:
rc = call("./sleep.sh", shell=True)
Si le script n'a pas de permissions d'exécution et que vous ne pouvez pas le changer, par exemple en exécutant os.chmod('sleep.sh', 0o755)
alors vous pourriez lire le script comme un fichier texte et passer la chaîne à subprocess
à la place :
with open('sleep.sh', 'rb') as file:
script = file.read()
rc = call(script, shell=True)