写一个创建用户的脚本,要求如下
1.执行时会询问,请输入要创建的用户名称(当用户超时8秒不输入,提示超时并退出),脚本会检测用户名是否已经存在,若已存在,则提示用户已存在,是否要为其设置密码,如否,则继续回到第1步,询问用户另一个用户名。如是,进入第3步。
2.如第1步完成,则会创建指定用户,然后脚本继续问用户是否为新用户设置密码,如否,则返回第1步继续创建其他用户,如是,则进入第3步
3.为用户设置密码,要求密码要验证2次,2次一致才可通过。同时密码要满足复杂性要求,要求如下:
密码至少8个字符长度,密码必须包含 大写,小写字母,数字,和#@!,._ 这之中的三种字符。 如不满足,则提示用户密码太短或太简单,返回第3步。
且密码不能是 /usr/share/dict/words 已存在的字符,或是,则提示用户密码是个常见单词,然后返回第3步。
用户只能尝试设置新密码3次,若超过3次仍然没有设置出满足要求的密码,则直接返回第1步。
4.在任何步骤,只要输入exit均可退出脚本。
#!/bin/bash
#判断输入是否超时
chaoshi(){
if read -t 8 -p "请输入用户名:" name
then
if [[ exit = $name ]];then
exit
else
yonghu
fi
else
echo
echo "输入超时!"
fi
}
out(){
let s++
if [ $s -eq 3 ];then
chaoshi;
fi
}
#输入新密码
newpasswd(){
read -sp "Please input your password for ${name}: " Passwd1
#判断密码是否为exit
if [[ exit = $Passwd1 ]];then
echo
exit;
fi
echo
read -sp "Please input your password for ${name}: " Passwd2
#判断密码是否为exit
if [[ exit = $Passwd2 ]];then
echo
exit;
fi
if [ $Passwd1 = $Passwd2 ];then
if [ ${#Passwd1} \> 8 ];then
#"Passwd1_@#\!"|grep -o '[_!@#]'
if ( `echo $Passwd1|grep "[_#@!]"` &> /dev/null );then
let a++
echo $a
fi
if (echo $Passwd1|grep "[[:lower:]]" &> /dev/null );then
let a++
fi
if (echo $Passwd1|grep "[[:upper:]]" &> /dev/null );then
let a++
fi
if (echo $Passwd1|grep "[0-9]" &> /dev/null );then
let a++
fi
if [ $a -ge 3 ];then
echo
echo $Passwd1|passwd --stdin $name &> /dev/null && echo "Password for $name update!"
else
echo "密码太简单了!"
out
newpasswd
fi
else
echo
echo "密码太短了";
out
newpasswd;
fi
else
echo
echo "两次输入密码不一致,请重新输入"
out
newpasswd
fi
}
#创建新用户
newuser(){
useradd $name && echo "$name created"
newpasswd
}
#用户登录时调用
yonghu(){
if ( id $name &> /dev/null );then
echo "用户已存在!"
read -p "是否为期设置密码?(y/n)" yesorno
case $yesorno in
y)newpasswd;;
n)chaoshi;;
exit)exit;;
*)echo "输入错误!";;
esac
else
echo "用户不存在"
newuser
fi
}
chaoshi
shell脚本大练习题
最新推荐文章于 2023-04-23 19:46:24 发布