Capistrano 3 Sudo密码挂起

时间:2015-02-19 04:50:46

标签: capistrano3 whenever

我有以下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]

输入密码并按Enter后,它永远不会完成任何操作。完全没有回应。那里有任何答案吗?

2 个答案:

答案 0 :(得分:13)

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

  1. gem 'sshkit-sudo'添加到Gemfile
  2. require 'sshkit/sudo'添加到Capfile
  3. 现在您可以在Capistrano 3任务中使用sudo命令。

答案 1 :(得分:0)

Capistrano有点希望你用sudoers文件link来处理它,这样就不需要输入密码了。

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