Если sleep.sh
есть shebang #!/bin/sh
и соответствующие права доступа chmod u+rx sleep.sh
к файлу - запустите, чтобы убедиться, что он есть, $PATH
тогда ваш код должен работать как есть:
import subprocess
rc = subprocess.call("sleep.sh")
Если скрипт отсутствует в PATH, укажите полный путь к нему, например, если он находится в текущем рабочем каталоге:
from subprocess import call
rc = call("./sleep.sh")
Если в скрипте нет shebang, необходимо указать shell=True
:
rc = call("./sleep.sh", shell=True)
Если у скрипта нет прав на исполнение и вы не можете его изменить, например, запустив его, os.chmod('sleep.sh', 0o755)
вы можете прочитать скрипт как текстовый файл и subprocess
вместо этого передать строку в модуль:
with open('sleep.sh', 'rb') as file:
script = file.read()
rc = call(script, shell=True)