Si sleep.sh
a le shebang #!/bin/sh
et qu'il a les autorisations de fichier appropriées - exécutez chmod u+rx sleep.sh
pour vous assurer qu'il est dedans, $PATH
alors votre code devrait fonctionner tel quel :
import subprocess
rc = subprocess.call("sleep.sh")
Si le script n'est pas dans le PATH, spécifiez le chemin complet vers lui, par exemple, s'il se trouve dans le répertoire de travail actuel:
from subprocess import call
rc = call("./sleep.sh")
Si le script n'a pas de shebang, vous devez spécifier shell=True
:
rc = call("./sleep.sh", shell=True)
Si le script n'a pas d'autorisations exécutables et que vous ne pouvez pas le modifier, par exemple, en exécutant, os.chmod('sleep.sh', 0o755)
vous pouvez lire le script sous forme de fichier texte et passer la chaîne au subprocess
module à la place:
with open('sleep.sh', 'rb') as file:
script = file.read()
rc = call(script, shell=True)