ruby - Capistrano 3.0 — 现在如何安全地提示输入密码?

标签 ruby deployment capistrano capistrano3

3.0 之前有一种方法可以做到这一点:

# ...
set :mysql_password, proc { Capistrano::CLI.password_prompt "Gimme remote database server password. Don't worry, I won't tell anyone: " }
# ...

namespace :db do
  desc 'Dump remote database'
  task :dump do
    run "mysqldump -u #{mysql_user} -p #{mysql_database} > ~/#{mysql_database}.sql" do |channel, stream, data|
      if data =~ /^Enter password:/
        channel.send_data "#{mysql_password}\n"
      end
    end
  end
end

它会提示输入密码,在您键入时不会显示密码,并且不会在日志和输出中留下任何痕迹。

现在,从 3.0 开始,我发现的唯一方法是:

# ...

namespace :db do
  desc 'Dump remote database'
  task :dump do
    ask :mysql_password, nil
    on roles(:db) do
      execute "mysqldump -u#{fetch :mysql_user} -p#{fetch :mysql_password} #{fetch :mysql_database} > ~/#{fetch :mysql_database}.sql"
    end
  end
end

它完成了工作,但到处都显示密码。

有没有人在 3.0 中找到密码提示的安全方法?谢谢!

最佳答案

目前,no , 可能在下一个次要版本 (3.2) 中:

It would be helpful if ask() had an option to not echo input, similar to the previous Capistrano::CLI.password_prompt

...

Either way, it'll be a 3.2 thing.

关于ruby - Capistrano 3.0 — 现在如何安全地提示输入密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789912/

相关文章:

ruby - ruby 队列不是线程安全的,为什么队列不同步?

ruby-on-rails - Capistrano Rails部署后重新启动服务

Ruby 正则表达式避免匹配组

ruby-on-rails - rails : Active Admin Association Image column

c# - Winform根目录路径。怎么又来了!

java - 无法通过 Jenkins 部署 war 来刺激

deployment - 如何配置Web容器使其连续运行,以便使用GRADLE jetty 进行热重新部署?

ruby-on-rails - 从Docker容器中管理Capistrano部署的SSH key

php - 通过 : remote_cache 使用 Capistrano + Gitlab 进行部署

ruby - gem 二进制文件可以自带制表符补全吗?