我在Windows机器上运行Ruby和MySQL.
我有一些需要连接MySQL数据库的Ruby代码执行select.要连接到数据库,我需要提供密码等.
Ruby代码可以显示请求密码的提示,用户输入密码并按Enter键.我需要的是密码,因为它是键入的,显示为一行星号.
如何让Ruby在'dos box'中将键入的密码显示为一行星号?
Sim*_*hts 50
要回答我自己的问题,并且为了其他任何想知道的人的利益,你需要一个名为HighLine的Ruby宝石.
require 'rubygems'
require 'highline/import'
def get_password(prompt="Enter Password")
ask(prompt) {|q| q.echo = false}
end
thePassword = get_password()
Run Code Online (Sandbox Code Playgroud)
jk.*_*jk. 24
穷人的解决方案:
system "stty -echo"
# read password
system "stty echo"
Run Code Online (Sandbox Code Playgroud)
或者使用http://raa.ruby-lang.org/project/ruby-password/
此库的目标受众是需要编写提示,生成,验证和加密密码的Ruby程序的系统管理员.
编辑:哎呀我没注意到你需要这个Windows :(
小智 12
根据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 = "*" }
Run Code Online (Sandbox Code Playgroud)
这是控制台上的输出:
$ ruby highline.rb
Enter your username: doug
Enter your password: ******
Run Code Online (Sandbox Code Playgroud)
从 Ruby 2.3 开始,您可以IO#getpass这样使用该方法:
require 'io/console'
STDIN.getpass("Password: ")
Run Code Online (Sandbox Code Playgroud)
http://ruby-doc.org/stdlib-2.3.0/libdoc/io/console/rdoc/IO.html#method-i-getpass
以上内容是从Zoran Majstorovic删除的答案中复制的。