如何在Ruby中从命令行读取密码?

时间:2020-03-06 14:43:28  来源:igfitidea点击:

我在Windows框上运行Ruby和MySQL。

我有一些需要连接到MySQL数据库并执行选择的Ruby代码。要连接到数据库,我需要提供密码。

Ruby代码可以显示要求输入密码的提示,用户键入密码并按Enter键。我需要输入的密码显示为星号。

如何让Ruby在" dos框"中将输入的密码显示为星号?

解决方案

穷人的解决方案:

system "stty -echo"
# read password
system "stty echo"

或者使用http://raa.ruby-lang.org/project/ruby-password/

The target audience for this library is system administrators who need to write Ruby programs that prompt for, generate, verify and encrypt passwords.

编辑:糟糕,我未能注意到我们需要Windows的此功能:(

为了回答我自己的问题,并为任何其他想知道的人带来好处,我们需要一个名为HighLine的Ruby gem。

require 'rubygems'
require 'highline/import'

def get_password(prompt="Enter Password")
   ask(prompt) {|q| q.echo = false}
end

thePassword = get_password()

根据Highline的文档,这似乎可行。不知道它是否可以在Windows上运行。

#!/usr/local/bin/ruby
require 'rubygems'
require 'highline/import'

username = ask("Enter your username:  ") { |q| q.echo = true }
password = ask("Enter your password:  ") { |q| q.echo = "*" }

这是控制台上的输出:

$ ruby highline.rb 
Enter your username:  doug
Enter your password:  ******