Capistrano在Ubuntu框提示输入SUDO密码时挂起

Capistrano在Ubuntu框提示输入SUDO密码时挂起,capistrano,sudo,Capistrano,Sudo,我有一个capistrano部署方法,我已经使用了一段时间来部署我的web应用程序,然后使用sudo命令重新启动apache/nginx。最近,当我尝试执行这些sudo命令时,capdeploy挂起。我看到了输出: “[sudo]的密码” 使用我的服务器名和远程登录,但这不是安全的登录提示。cap shell只是挂起等待更多输出,不允许我输入密码来完成远程sudo命令 有没有办法解决这个问题,或者找个像样的工作?我不想删除远程用户对web重启命令的sudo密码提示。连接到CentOS机器时似乎也

我有一个capistrano部署方法,我已经使用了一段时间来部署我的web应用程序,然后使用sudo命令重新启动apache/nginx。最近,当我尝试执行这些sudo命令时,capdeploy挂起。我看到了输出: “[sudo]的密码” 使用我的服务器名和远程登录,但这不是安全的登录提示。cap shell只是挂起等待更多输出,不允许我输入密码来完成远程sudo命令


有没有办法解决这个问题,或者找个像样的工作?我不想删除远程用户对web重启命令的sudo密码提示。

连接到CentOS机器时似乎也会发生这种情况。在capistrano部署文件中添加以下行:

default_run_options[:pty] = true
另外,请确保使用
sudo
帮助程序,而不是直接在运行命令中执行
sudo
。例如:

# not
run "sudo chown root:root /etc/my.cnf"

# but
sudo "chown root:root /etc/my.cnf"

其他的建议可能是合理的,但我发现,一旦我更新到Capistrano 2.5.3,问题就消失了。我必须确保停止运行操作系统附带的工具的默认版本。

这不就是隐藏sudo的密码提示吗
sudo
现在已不推荐使用,因此您应该执行
run“#{sudo}chown root:root/etc/my.cnf”
或使用
invoke_命令
例如
invoke_命令“chown root:root/etc/my.cnf”,:via=>run_方法
。其中run\u方法定义sudo(或不定义sudo,取决于您的
设置:use\u sudo,true/false
我必须确保停止运行操作系统附带的工具的默认版本。
我将停止使用不稳定的软件堆栈,并开始使用操作系统附带的工具
# prevent sudo prompting for password
set :sudo_prompt, ""