最近有一个需求,要写个shell,中间需要让用户输入一个密码,这时候不可以让用户输入的密码显示在屏幕上。
本来这个需求一开始没想到该如何实现,后来突然想到,之前做审计系统测试的时候,用到过这个命令:
stty -echo
这一条命令敲下去,用户后续的输入都不会有回显。
受到这一个点启发,找到了灵感。
完整的需求是这样的:
执行shell,让用户输入一个长度不超过 N 位的密码(这里假设N = 8),超过长度要报错,不超过则将密码进行某种运算,存储起来(这里假设为计算MD5):
#!/bin/bash
var=""
while [ ${#var} -eq 0 ]
do
stty -echo
echo "Please Input password(8 Bit max):"
read var
if [ ${#var} -gt 8 ]; then
echo "Psswd too long, 8 Bit Only."; var=""
fi
done
stty echo
echo $var | md5sum | awk '{print $1}'
哈哈,就是这个样子↑