コマンドラインからのパスワード入力機能をつける
ソーシャルブックマークに投稿するスクリプトの動作テストをするときに、
いくらテスト目的とは言え、コード内に直接パスワードを記述するのは嫌ですよね。
(特に近くに人がいる場合)
そんなとき、パスワードだけ実行時に入力するようにすればその悩みもちょっと解決。
最初は、
print 'password: ' password = $stdin.gets.chop
としていたのですが、これだと実行時に、
$ ruby hoge.rb password: (ここに打った内容が表示されてしまう)
なので、パスワードをタイプしている間はコンソールに表示されないようにしたい。
ということで少し調べてみるとMLに以下のような投稿が。
:rubyでパスワードをユーザから受け取りたいとき
:にそのテキスト(文字列)を表示させないようにする
:ことはできるのでしょうか?簡単なのは
system "stty -echo"
password = $stdin.gets.chop
system "stty echo"
です. ioctl を使うのは移植性の問題もあるし.
ということで、以下のように読み取り行を挟んでやると無事解決。お疲れ様でした。
print 'password: ' system "stty -echo" password = $stdin.gets.chop system "stty echo"