Прежде всего, я бы порекомендовал вам использовать модуль subprocess
вместо os
. Чтобы выполнить команду оболочки и захватить код возврата, stdout и stderr, вы можете попробовать:
from subprocess import run, PIPE
res = run('apt-cache policy python3.6-dev', shell=True, stdout=PIPE, stderr=PIPE, check=True)
print(res.returncode, res.stdout, res.stderr)
, где check
(необязательно) - вызвать исключение, если выполнение не удалось (код возврата> 0) .
Чтобы запустить команду с помощью sudo, я бы предложил следующее:
password = "my_password"
base_command = "ls -l" # replace it with your command
command_with_sudo = f"echo {password} | sudo -S {base_command}"
res = run(command_with_sudo, shell=True, check=True, stdout=PIPE, stderr=PIPE)
Обратите внимание, что очень небезопасно хранить ваш пароль в виде простого текста в вашем коде, поэтому старайтесь избегать его (вы можете предоставить его в качестве аргумента для вашего скрипта / сохранить его в вашей среде / как-то зашифровать - просто не оставляйте его как есть в вашем коде)