红联Linux门户
Linux帮助

Shell模拟密码输入(特殊按键的检测)

发布时间:2016-06-10 14:57:52来源:linux网站作者:linux人

shell我们平常在windows下登陆的时候输入密码的时候会回显一个“*”,而linux下只是屏蔽了回显,那shell有办法实现回显"*"么?
在网上搜了一阵,找到如下的实例,但是这个例子在我的环境下(ubuntu 16.04)运行还时有缺陷,主要的问题处在判断特殊按键上(backtrace/enter...),也就时下面代码中的case语句不能很好的工作。


#!/bin/bash 

STTY_RESTORE=$(stty -g) 

echo -n "Username: " 
read username 

echo -n "Password: " 
stty -echo cbreak 
while true 
do 
character=$(dd if=/dev/tty bs=1 count=1 2> /dev/null) 
case $character in 
$(echo -e "\n")) 
break 
;; 
$(echo -e "\b")) 
if [ -n "$password" ]; then 
echo -n -e "\b \b" 
password=$(echo "$password" | sed "s/.$//g") 
fi 
;; 
*) 
password=$password$character 
echo -n "*" 
;; 
esac 
done 

stty $STTY_RESTORE  #stty -cbreak echo 

echo -e "\n\nUsername is $username" 
echo "Password is $password"


本文永久更新地址://m.ajphoenix.com/linux/21399.html