Я хочу подключиться к удаленному серверу по 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']
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