#1,我们变量保存两个账号和密码:例如:name1=xxx name2 =xxx passwd1=xxx passwd=2222
#2,输出一个登录选择窗口:(1)用户登录(2)用户退出
#3,如果用户选择登录:先让用户输入用户名,判断用户名是否存在。如果不存在,继续让用户输入,直到输入正确为止。如果用>户输入正确,让用户输入密码。
#4,密码最多错3次,3次以后,账号锁定。不让继续登录。但是另外一个账号可以登录。
#5,用户登陆成功自动退出脚本
###########################################################################
上面是要求
开始理思路
两个账号和密码也简单直接创建就可以了,密码也直接给(不过记得要非交互式的)
做一个登录平台有用户登录和用户退出两个选项这个简单只是显示问题然后跟上case就可以了
先从简单的来,用户退出很简单直接exit就可以了,十分简单。
然后用户登录,这上面并没有要求用户注册所以可以不用考虑,只是要考虑两个用户的登录问题和超过三次后密码锁死passwd -l yh1。
用echo把用户登录先给显示出来,然后case进行判断,给三个选项1、2、*,*为其他输出没有此选项,同理进入到用户登录后也需要yh1、yh2、*。
*的时候输出为没有此用户,yh1进入,然后输入yh1密码这时候有三种情况发生密码错误、密码正确、密码正确但是已锁死用户不可登录。
密码正确和密码正确但是已锁死是可以一起解决的,echo "登录成功" && su yh1 || echo "抱歉你输入次数过多,用户已锁死",只要进行与计算和或计算就可以了
然后三次密码可以进行while的无限循环在里面嵌套一个if判断就可以了
yh2同理yh1
以下脚本
#############################################################################
#!/bin/bash
#1,我们变量保存两个账号和密码:例如:name1=xxx name2 =xxx passwd1=xxx passwd=2222
#2,输出一个登录选择窗口:(1)用户登录(2)用户退出
#3,如果用户选择登录:先让用户输入用户名,判断用户名是否存在。如果不存在,继续让用户输入,直到输入正确为止。如果用>户输入正确,让用户输入密码。
#4,密码最多错3次,3次以后,账号锁定。不让继续登录。但是另外一个账号可以登录。
#5,用户登陆成功自动退出脚本
useradd yh1
useradd yh2
echo "111111" | passwd --stdin yh1
echo "222222" | passwd --stdin yh2
(这个脚本有点旧了,我记得那时候好像密码这样一块我好像有一点小问题,关系不大,额,忘记改没改了)
#上面其实可以加判断的,不然从第二次开始就会一直报错不过我比较懒,所以。。。。。。。。
echo "1.用户登录"
echo "2.用户退出"
a=yh1
b=yh2
read -p "请选择一个选项:" A
case $A in
1)
read -p "请输入用户名:" v
case $v in
yh1)
i=0
while :;
read -p "请输入密码 : " AA
do
let i++
if [ "111111" -eq $AA ] ; then
echo "登录成功" && su yh1 || echo "抱歉你输入次数过多,用户已锁死"
elif [ $i -le 2 ]; then
echo "密码错误,您还有$(expr 3 - $i)试错的机会,试错用完将锁死用户"
else
echo "对不起您没机会了" && passwd -l yh1
exit
fi
done
;;
yh2)
i=0
while :;
read -p "请输入密码 : " AA
do
let i++
if [ "222222" -eq $AA ] ; then
echo "登录成功" && su yh2 || echo "抱歉你输入次数过多,用户已锁死"
elif [ $i -le 2 ]; then
echo "密码错误,您还有$(expr 3 - $i)试错的机会,试错用完将锁死用户"
else
echo "对不起您没机会了" && passwd -l yh2
exit
fi
done
;;
*)
echo "无此用户"
esac
;;
2)
exit
;;
esac
############################################################################