Как я могу прочитать пароль из командной строки в Ruby?
Я запускаю Ruby и MySQL в окне Windows.
У меня есть код Ruby, который необходимо подключиться к базе данных MySQL, чтобы выполнить выбор. Чтобы подключиться к базе данных, мне нужно указать пароль среди прочего.
Код Ruby может отображать запрос с запросом пароля, пользователь вводит пароль и нажимает клавишу Enter. Мне нужно, чтобы пароль, как он набран, отображался как строка звездочек.
Как я могу заставить Ruby отображать введенный пароль как строку звездочек в поле "dos"?
Ответы
Ответ 1
Чтобы ответить на мой собственный вопрос, и в интересах любого, кто хотел бы знать, есть драгоценный камень Ruby под названием HighLine что вам нужно.
require 'rubygems'
require 'highline/import'
def get_password(prompt="Enter Password")
ask(prompt) {|q| q.echo = false}
end
thePassword = get_password()
Ответ 2
Бедственное решение:
system "stty -echo"
# read password
system "stty echo"
Или используя http://raa.ruby-lang.org/project/ruby-password/
Целевой аудиторией для этой библиотеки являются системные администраторы, которым необходимо писать программы Ruby, которые запрашивают, генерируют, проверяют и шифруют пароли.
Изменить:. Я не заметил, что это необходимо для Windows: (
Ответ 3
Согласно документу 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: ******
Ответ 4
Следующие работы (lobin.rb) в ruby not jruby
require 'highline/import'
$userid = ask("Enter your username: ") { |q| q.echo = true }
$passwd = ask("Enter your password: ") { |q| q.echo = "*" }
Вывод с консоли:
E:\Tools>ruby login.rb
Enter your username: username
Enter your password: ********
Howerver, если я запускаю jruby, он терпит неудачу и не дает возможности ввести ваш пароль.
E:\Tools>jruby login.rb
Enter your username: username
Enter your password:
Ответ 5
В fancy_gets gem есть парольная вещь, которая отлично работает с jruby:
https://github.com/lorint/fancy_gets
Код заканчивается следующим образом:
require 'fancy_gets'
include FancyGets
puts "Password:"
pwd = gets_password
# ...