# How to read password from keyboard

**URL:** <https://www.ruby-forum.com/t/how-to-read-password-from-keyboard/192414>\
**Category:** Ruby\
**Created:** [July 29, 2010, 10:31pm UTC](https://www.ruby-forum.com/t/how-to-read-password-from-keyboard/192414 "2010-07-29T22:31:18Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![steux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d26b3c/32.png) [@steux](https://www.ruby-forum.com/u/steux)\
**Post date:** [July 29, 2010, 10:31pm UTC](https://www.ruby-forum.com/t/how-to-read-password-from-keyboard/192414/1 "2010-07-29T22:31:18Z")

</div>

Hi everyone!

If I want to read a simple string from keyboard:  
simple\_text = gets

What if a password needs to be read from keyboard (commando line)?  
How do I mask it with asterisks?

Regards,  
Bruno

---

<div class="post-metadata">

**Author:** ![steux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d26b3c/32.png) [@steux](https://www.ruby-forum.com/u/steux)\
**Post date:** [July 29, 2010, 10:49pm UTC](https://www.ruby-forum.com/t/how-to-read-password-from-keyboard/192414/2 "2010-07-29T22:49:34Z")

</div>

> If I want to read a simple string from keyboard:  
> simple\_text = gets
> 
> What if a password needs to be read from keyboard (commando line)?  
> How do I mask it with asterisks?

Try thinking of it like this:

every time a key is pressed on the keyboard, you want to:

print “\*”

I don’t have time right now to mock up an example, but that might get  
you started.

---

<div class="post-metadata">

**Author:** ![steux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d26b3c/32.png) [@steux](https://www.ruby-forum.com/u/steux)\
**Post date:** [July 29, 2010, 11:24pm UTC](https://www.ruby-forum.com/t/how-to-read-password-from-keyboard/192414/3 "2010-07-29T23:24:58Z")

</div>

Bruno S. wrote:

> Hi everyone!
> 
> If I want to read a simple string from keyboard:  
> simple\_text = gets
> 
> What if a password needs to be read from keyboard (commando line)?  
> How do I mask it with asterisks?
> 
> Regards,  
> Bruno

This can help you:

> <https://stackoverflow.com/questions/133719/how-can-i-read-a-password-from-the-command-line-in-ruby>

---

<div class="post-metadata">

**Author:** ![steux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d26b3c/32.png) [@steux](https://www.ruby-forum.com/u/steux)\
**Post date:** [July 29, 2010, 11:37pm UTC](https://www.ruby-forum.com/t/how-to-read-password-from-keyboard/192414/4 "2010-07-29T23:37:00Z")

</div>

c.echo=false; not needed… Only needs the c.echo=’\*’

>

---

<div class="post-metadata">

**Author:** ![steux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d26b3c/32.png) [@steux](https://www.ruby-forum.com/u/steux)\
**Post date:** [July 29, 2010, 11:31pm UTC](https://www.ruby-forum.com/t/how-to-read-password-from-keyboard/192414/5 "2010-07-29T23:31:44Z")

</div>

require ‘rubygems’  
require ‘highline/import’

pwd = ask("Enter your password: " ) {|c| c.echo=false; c.echo=’\*’;}

puts “the password=#{pwd}”

---

<div class="post-metadata">

**Author:** ![steux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d26b3c/32.png) [@steux](https://www.ruby-forum.com/u/steux)\
**Post date:** [July 30, 2010, 2:02pm UTC](https://www.ruby-forum.com/t/how-to-read-password-from-keyboard/192414/6 "2010-07-30T14:02:33Z")

</div>

Thanks everyone!  
that’s exactly what I wanted!

Bruno
