Мне нужно открыть терминал, используя sudo
из python. Рассмотрим мой пароль pass
, и мне нужно запустить команду в скрипте, который является sudo critical-stack-intel pull
.открытый терминал с sudo python
Я следующий небольшой фрагмент кода:
import subprocess
import shlex
command = "sudo critical-stack-intel pull"
popen = subprocess.Popen(shlex.split(command),stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
popen.communicate("pass")
popen.wait()
# print help(p)
Если я запустить файл как python myfile.py
, он просит меня пароль в терминале. Это не то, чего я хочу. Я хочу, чтобы python обрабатывал пароль, который я дал, и запускал нормально. Как мне это сделать?
EDIT
Использование popen.communicate(pass + "\n")
вместе с sudo -S
сделал то, что я желал.
'sudo' открывает tty, он не использует stdin по умолчанию. Используйте 'sudo -S' вместо –
Посмотрите на это: http://stackoverflow.com/questions/567542/running-a-command-as-a-super-user-from-a-python-script – nablahero
Я хочу использовать 'subprocess.Popen' не' os.Popen'. – Pant