我最近开始研究用于远程部署的结构。我需要切换到差异用户(从我登录的用户)并且无法弄清楚。甚至有可能,如果可以,怎么办?我当前的用户没有sudo
权限。
我尝试更改以下环境变量
env.sudo_prefix = "su newUser -c "
env.sudo_prompt = "Password:"
但是fabric不等待'newUser'的密码输入并且失败。
out: Password:
[oldUser@ec2-111-11-111-111.compute-1.amazonaws.com] 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 oldUser@ec2-111-11-111-111.compute-1.amazonaws.com... done.
更新:
正如 JF Sebastian 所建议的那样,su newUser -c
它可以工作,但它会提示每个服务器的每个命令的密码,这违背了自动化的目的。Fabric中有什么方法可以根据提示传递相同的值(在这种情况下,它总是Password:
)