Недавно я начал искать ткань для удаленного развертывания. Мне нужно переключиться на пользователя diff (от того, под которым я вхожу), и я не могу понять это. Возможно ли это, если да, то как? У моего текущего пользователя нет разрешений sudo
.
Я попытался изменить следующие переменные среды
env.sudo_prefix = "su newUser -c "
env.sudo_prompt = "Password:"
Но ткань не ждет ввода пароля для «newUser» и терпит неудачу.
out: Password:
[[email protected]] out: su: incorrect password
Fatal error: sudo() received nonzero return code 1 while executing!
Requested: touch x
Executed: su newUser -c -u "root" /bin/bash -l -c "cd /home/oldUser/upgrade && touch x"
Aborting.
Disconnecting from [email protected]... done.
Обновлять:
Как предположил Дж. Ф. Себастьян, su newUser -c
работает, но запрашивает пароль для каждой команды для каждого сервера, что противоречит цели автоматизации. Есть ли способ в Fabric передать одно и то же значение на основе подсказки (в данном случае это всегда Password:
)
sudo('su newuser')
- person jfs   schedule 28.09.2012run('su newuser -c command')
работает как положено. Какая у вас версия ткани? - person jfs   schedule 28.09.2012env.password
в дополнение кenv.sudo_*
? Хотя ткань использует-S
в префиксе sudo по умолчанию, т. е. она передает пароль через стандартный ввод, поэтомуsu
может не работать, если она считывает пароль напрямую с tty. - person jfs   schedule 28.09.2012env.password
для первоначального входа в систему. Я использую его в настоящее время. - person shailesh mangal   schedule 28.09.2012env.password
:with settings(password=newuser_password): sudo(command)
? - person jfs   schedule 28.09.2012