在 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 previousCapistrano::CLI.password_prompt
...
Either way, it'll be a 3.2 thing.
关于ruby - Capistrano 3.0 — 现在如何安全地提示输入密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789912/