【问题标题】:Capistrano 3 Sudo Password HangsCapistrano 3 Sudo 密码挂起
【发布时间】:2015-04-20 08:24:43
【问题描述】:

我有以下 capistrano 3 任务:

desc 'Add root scheduled tasks'
task :root_schedules do
  on roles(:all) do 
    within release_path do
      execute :sudo, :bundle, 'exec whenever -w config/root_schedule.rb -u root'
    end
  end
end

我需要以 sudo 权限运行此任务,因为我需要以更高权限运行计划任务。这些是后端计划的服务器任务。问题是每次我运行这个命令我都会得到以下信息:

DEBUG [46d3800c]    [sudo] password for [user]

在我输入密码并回车后,它永远不会完成任何事情。完全没有反应。有答案吗?

【问题讨论】:

    标签: capistrano3 whenever


    【解决方案1】:

    我刚刚为此创建了一个 gem:sshkit-sudo

    1. gem 'sshkit-sudo' 添加到 Gemfile
    2. require 'sshkit/sudo' 添加到 Capfile

    现在您可以在 Capistrano 3 任务中使用 sudo 命令。

    【讨论】:

    • 我已经阅读了信息,但我仍然想知道您的 gem 是如何获得 sudo 密码的?它会提示吗?
    • @AlexanderGorg 是的。当远程服务器提示您输入 sudo 密码时,gem 会等待您输入。
    • 我非常感谢你!这是一个非常酷的宝石!祝你一切顺利!
    • @AlexanderGorg 很高兴。你的话让我很开心:-)
    【解决方案2】:

    Capistrano 有点希望您使用 sudoers 文件 link 处理此问题,这样就不需要输入密码。

    问题的直接答案是:capistrano 可能使用默认的非登录、非交互 shell。由于 shell 是非交互式的,这可能解释了为什么忽略用户输入。 阅读更多关于此here 的信息。

    【讨论】:

      猜你喜欢
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多