Если 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)