HowTo hide Password in shell Scripting using Bash
Today our subject is related to bash shell scripting. and when you are doing complex shell scripting sometimes you need to read the password formstdin, but you don’t want to show the password as its being entered, so how could we do such thing.
We will do it in very simple approach using sttywhich is used mostly in changing or printing terminal line settings in human readable format or in stty readable format”sequence of hex values” , so lets jump to the solution explanation
1. Save original terminal settings in a variable
2. Disable echo from terminal line settings
3. When ever you need to enable terminal line echo use the variable we sat in point 1, and when ever you want to disable echo use point 2
Check below example which represent password validation function.
#!/bin/bash pass_check(){ #password validation function stty_orig=`stty -g` stty -echo read -p 'Enter your password : ' password echo "" read -p 'Enter your password once again : ' password1 stty $stty_orig echo "" if [ $password != $password1 ] then echo ' password doesnt match ' pass_check else stty $stty_orig fi }
If you misused stty for echo or for any thing else , the terminal stop responding for your input, or you will notice terminal behaving in a weird way. As a solution usereset command any time to reset stty to its defaults.
I hope that was helpful : ) .