Я новичок, когда дело доходит до ssh, sudo и других вещей unix ... так что терпите меня, здесь.
У меня уже есть сайт rails, настроенный и развертываемый с vlad через ssh. это отлично работает. теперь мне нужно, чтобы мой процесс развертывания запускал команду sudo для перезапуска monit.
Я просто хочу запустить sudo monit reload и sudo monit start my_job_name. но когда я запускаю эти команды, я получаю ошибки с сервера ubuntu:
sudo: no tty present and no askpass program specified
Я провел несколько поисков в Google, и большинство ответов, которые я нашел, связаны с изменением /etc/sudoers
чтобы не требовать пароль для команд, которые я хочу. Честно говоря, мне не нравится этот вариант. это похоже на взлом / обходной путь, когда я смогу настроить свой сервер так, чтобы он правильно запрашивал пароль и чтобы vlad предоставлял пароль (в конце концов, vlad поддерживает ssh_password
настройка, которую я заполнил).
Может ли кто-нибудь указать мне правильное направление для настройки моего сценария vlad и моего сервера ubuntu 10.10, чтобы правильно запустить мою команду sudo?
Вы можете изменить /etc/sudoers
и удалить requiretty
вариант, чтобы sudo работал, когда tty недоступен (например, из заданий cron, демонов и т. д.). Вам не обязательно разрешать sudo без пароля, просто удалите эту опцию.
Попробуй это:
set :sudo_flags, sudo_flags << '-S'
set :run_as_sudo, [sudo_cmd, sudo_flags].flatten.compact.join(' ')
Для ваших команд выполните:
run "#{run_as_sudo} cmd"
Он должен запросить ваш пароль во время выполнения.