在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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。