需求:检查检查密码是否包含大写、小写、数字、特殊字符和密码长度8。
#!/bin/bash
#检查检查密码是否包含大写、小写、数字、特殊字符和密码长度。
for passwd in `cat frepwd.txt`
do
#echo $passwd
strlen=`echo $passwd | grep -E --color '^(.{8,}).*$'`
#密码长度是否8位以上(包含8位)
strlow=`echo $passwd | grep -E --color '^(.*[a-z]+).*$'`
#密码是否有小写字母
strupp=`echo $passwd | grep -E --color '^(.*[A-Z]).*$'`
#密码是否有大写字母
strts=`echo $passwd | grep -E --color '^(.*\W).*$'`
#密码是否有特殊字符
strnum=`echo $passwd | grep -E --color '^(.*[0-9]).*$'`
#密码是否有数字
#-n 判断字符不为空 返回真
if [ -n "${strlen}" ] && [ -n "${strlow}" ] && [ -n "${strupp}" ] && [ -n "${strts}" ] && [ -n "${strnum}" ]
then
echo $passwd >> newfrepwd.log
else
echo $passwd >> nofrepwd.log
fi
done
--有一个需求,在执行脚本传参的时候检查下密码复杂度(这里只检查长度,大小写字母,数字,不检查特殊字符),于是在上面的基础上做了如下修改:
#本脚本的目的用于判断传的参数是否满足密码复杂度(长度8位以上,同时包含大小写字母,数字)
password=$(echo $1)
RED_COLOR='\E[1;31m'
GREEN_COLOR='\E[1;32m'
RES='\E[0m'
#判断是否传入了一个参数
if [[ $password = "" ]]
then
echo -e "${RED_COLOR}请在调用该脚本时传入一个密码参数,需要满足密码复杂度(长度8位以上,同时包含大小写字母,数字).${RES}"
exit
else
#判断传入的参数的复杂度
#密码长度是否8位以上(包含8位)
strlen=`echo $password | grep -E --color '^(.{8,}).*$'`
#密码是否有小写字母
strlow=`echo $password | grep -E --color '^(.*[a-z]+).*$'`
#密码是否有大写字母
strupp=`echo $password | grep -E --color '^(.*[A-Z]).*$'`
#密码是否有数字
strnum=`echo $password | grep -E --color '^(.*[0-9]).*$'`
#-n 判断字符不为空 返回真
if [ -n "${strlen}" ] && [ -n "${strlow}" ] && [ -n "${strupp}" ] && [ -n "${strnum}" ]
then
echo -e "${GREEN_COLOR}恭喜,您传入的参数满足密码复杂度.${RES}"
else
echo -e "${RED_COLOR}您传入的参数不满足密码复杂度,退出,请重新传参.${RES}"
exit
fi
echo 'continue...'
fi
--本篇文章转自:
https://www.jianshu.com/p/6c34cb6b2b73