2015-02-19 6 views
4

У меня есть следующее Capistrano 3 задача: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] 

После набираю пароль и нажать кнопку ввода, она никогда ничего не завершает. Никакой реакции вообще. Есть ли ответы?

ответ

0

Capistrano kinda ожидает, что вы обработали файл sudoers, link, чтобы вводить пароль не требуется.

Прямой ответ на вопрос: capistrano, вероятно, использует стандартную не-login, неинтерактивную оболочку. Поскольку оболочка не является интерактивной, это, вероятно, объясняет, почему пользовательский ввод игнорируется. Подробнее об этом here.

9

Я только что создал камень для этой цели: sshkit-sudo

  1. Добавить gem 'sshkit-sudo' в Gemfile
  2. Добавить require 'sshkit/sudo' в Capfile

Теперь вы можете использовать sudo команду в вашей задаче Capistrano 3.

+0

Я читал информацию, но мне все еще интересно, как ваш драгоценный камень получает пароль sudo? Он подсказывает это? –

+1

@AlexanderGorg Да. Когда удаленный сервер предложит вам ввести пароль sudo, жемчуг ждет вас, чтобы ввести его. –

+0

Я так благодарен вам! Это действительно крутой камень! Всего наилучшего! –