Subprocess.Popen для «ssh sudo -u user -i» не работает с «sudo: извините, для запуска sudo у вас должен быть tty»Python

Программы на Python
Гость
Subprocess.Popen для «ssh sudo -u user -i» не работает с «sudo: извините, для запуска sudo у вас должен быть tty»

Сообщение Гость »


Я хочу подключиться к удаленному серверу по SSH, сменить пользователя и выполнить скрипт. Для этого я использую подпроцесс, но похоже, что sudo -u userB -i не меняет пользователя.

Код: Выделить всё

HOST = 'remote_server'
USER = 'userA'
CMD = ' whoami; sudo -u userB -i; whoami'

ssh = subprocess.Popen(['ssh', '{}@{}'.format(USER, HOST),CMD],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if not result:
err = ssh.stderr.readlines()
print('ERROR: {}'.format(err))
else:
print "success"
print(result)

$ success
$ ['userA\n', 'userA\n']
When I replaced with CMD ='sudo -u userB -i && whoami', I got this error:


ERROR: ['sudo: sorry, you must have a tty to run sudo\n']


On the terminal, I'm able to do passwordless ssh, sudo -u userB -i && whoami


Источник: https://stackoverflow.com/questions/485 ... ry-you-mus

Вернуться в «Python»