我在Windows機器上運行Ruby和MySQL。如何從Ruby的命令行讀取密碼?
我有一些Ruby代碼需要連接到MySQL數據庫執行選擇。要連接到數據庫,我需要提供其他密碼。
Ruby代碼可以顯示請求密碼的提示,用戶輸入密碼並點擊Enter鍵。我需要的是輸入的密碼作爲一行星號顯示。
我該如何讓Ruby在'dos框中'顯示輸入的密碼作爲一行星號?
我在Windows機器上運行Ruby和MySQL。如何從Ruby的命令行讀取密碼?
我有一些Ruby代碼需要連接到MySQL數據庫執行選擇。要連接到數據庫,我需要提供其他密碼。
Ruby代碼可以顯示請求密碼的提示,用戶輸入密碼並點擊Enter鍵。我需要的是輸入的密碼作爲一行星號顯示。
我該如何讓Ruby在'dos框中'顯示輸入的密碼作爲一行星號?
要回答我的問題,並想知道誰比誰的利益,不存在一個Ruby寶石叫HighLine你需要的。
require 'rubygems'
require 'highline/import'
def get_password(prompt="Enter Password")
ask(prompt) {|q| q.echo = false}
end
thePassword = get_password()
窮人的解決方案:
system "stty -echo"
# read password
system "stty echo"
或者用http://raa.ruby-lang.org/project/ruby-password/
的目標讀者爲這個圖書館是誰需要編寫一個提示,生成,驗證和加密密碼Ruby程序的系統管理員。
編輯:哎呦我沒有注意到,你需要這個適用於Windows :(
根據海萊文檔,這似乎工作。不知道是否會在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: ******
以下作品(lobin.rb)的紅寶石不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:
的fancy_gets寶石有使用JRuby工作正常密碼的事情:
https://github.com/lorint/fancy_gets
的代碼最終像:
require 'fancy_gets'
include FancyGets
puts "Password:"
pwd = gets_password
# ...
highline不會爲我工作,它仍然回顯密碼。我認爲這與termios未安裝有關,但在安裝ruby-termios後仍然不起作用。我用ruby-password代替。 – user2063200 2013-02-12 01:00:59