Вот мой код:Python подпроцесс Судо возвращается ошибка: ERROR: [ «Sudo: извините, вы должны TTY для запуска SUDO п»]
import subprocess
HOST = 'host_name'
PORT = '111'
USER = 'user_name'
CMD = 'sudo su - ec2-user; ls'
process = subprocess.Popen(['ssh','{}@{}'.format(USER, HOST),
'-p', PORT, CMD],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = process.stdout.readlines()
if not result:
print "Im an error"
err = process.stderr.readlines()
print('ERROR: {}'.format(err))
else:
print "I'm a success"
print(result)
Когда я запускаю это я получаю следующий результат в моем терминале:
dredbounds-computer: documents$ python terminal_test.py
Im an error
ERROR: ['sudo: sorry, you must have a tty to run sudo\n']
Я пытался несколько вещей, но я получаю эту ошибку «Sudo: извините, вы должны TTY для запуска sudo». Он отлично работает, если я просто делаю это через терминал вручную, но мне нужно автоматизировать это. Я читал, что обходным решением может быть использование «-t» или «-tt» в моем вызове ssh, но я еще не смог реализовать это успешно в подпроцессе (терминал просто зависает для меня). Кто-нибудь знает, как я могу исправить свой код или решить эту проблему? В идеале я хотел бы ssh, затем переключиться на пользователя sudo, а затем запустить файл оттуда (я просто положил ls для тестирования).
Почему 'Sudo су - ec2 пользователей; ls' вместо 'sudo -u ec2-user ls'? – miken32