【问题标题】:Capistrano is hanging when prompting for SUDO password to an Ubuntu boxCapistrano 在向 Ubuntu 框提示输入 SUDO 密码时挂起
【发布时间】:2010-09-30 17:20:25
【问题描述】:

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

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

【问题讨论】:

    标签: capistrano sudo


    【解决方案1】:

    这似乎在连接到 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"
    

    【讨论】:

    • sudo 现在已弃用,因此您应该改为使用run "#{sudo} chown root:root /etc/my.cnf"
    • 或使用invoke_command 例如invoke_command "chown root:root /etc/my.cnf", :via => run_method。 run_method 定义 sudo 的地方(或不定义,取决于您的set :use_sudo, true/false
    【解决方案2】:

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

    【讨论】:

    • I have to make sure I stop running the default versions of tools that came with my O/S. 我会停止使用那个不稳定的软件堆栈并开始使用你的操作系统附带的工具
    【解决方案3】:
    # prevent sudo prompting for password
    set :sudo_prompt, ""
    

    【讨论】:

    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 2019-02-14
    • 2019-02-13
    • 2011-03-22
    • 2010-11-01
    • 2014-02-28
    • 2017-11-12
    • 1970-01-01
    相关资源
    最近更新 更多