2015年1月28日水曜日

シェルスクリプトでreadを使った際に、入力した文字を表示させない方法

小ネタだが、スクリプト実行時に特定のユーザーID、パスワードを使って処理を実施したい場合があるとして、その際に単純にreadで入力をさせてしまうと、TeraTerm等のログ保存を使っている場合、ログにパスワードが平文で表示されてしまう。

その対策として、sttyコマンドで入力文字のechoをOFFにしてしまえば良い。
# username入力を求める(これは表示される)
echo -n "username:"
read _user
echo

# password入力を求める(これは表示されない)
stty -echo
echo -n "password:"
read _pass
stty echo
echo