linux shell脚本检查用户密码是否达到标准

要求必须包含1个数字 1个小写字母 1个大写字母 1个特殊字符 8-20位

密码

BCDEabcde!@#
0123456789
ABCabc012@#
ABCabc123_
ABCDEabcde123456!@#$%
ABCabc8888
ssdfs999
WERWQ369
W&1E@wr8945
w@#$123
weqwr@#$!@!@#
GATEWAY=192.168.81.2
egrep '[a-zA-Z0-9[:punct:]]{11,15}' mima.txt |egrep '([A-Z]{1,20}[a-z]{1,20}[0-9]{1,20}[[:punct:]]{1,})'

方式一

#!/bin/bash

filename=mima2.txt
echo '**************'

count=1
cat $filename | while read line
do

echo "读取一行:"$line

#if [[ ${#line} -ge 6 && "$line" == *[A-Z]* && "$line" == *[a-z]* && "$line" == *[0-9]* ]]

if [[ ${#line} -ge 8 && "$line" == *[[:lower:]]* && "$line" == *[[:upper:]]* && "$line" == *[0-9]*  && "$line" == *[[:punct:]]* ]]
then
    echo "密码合规  "$line
else
    echo ""
fi

打印

读取一行:BCDEabcde!@#

读取一行:0123456789

读取一行:ABCabc012@#
密码合规  ABCabc012@#
读取一行:ABCabc123_

读取一行:ABCDEabcde123456!@#$%
密码合规  ABCDEabcde123456!@#$%
读取一行:ABCabc8888

读取一行:ssdfs999

读取一行:WERWQ369

读取一行:W&1E@wr8945
密码合规  W&1E@wr8945
读取一行:w@#$123

读取一行:weqwr@#$!@!@#

读取一行:GATEWAY=192.168.81.2

读取一行:

读取一行:

读取一行:

读取一行:

读取一行:

https://mlog.club/article/4826902

方式二 grep 正则方式

#!/bin/bash

filename=mima2.txt
echo '**************'

count=1
cat $filename | while read line
do

echo "读取一行:"$line

result=`echo $line|grep -E --color '^(.{8,}).*$'| grep -E --color '^(.*[a-z]+).*$'| grep -E --color '^(.*[A-Z]).*$'| grep -E --color '^(.*\W).*$'| grep -E --color '^(.*[0-9]).*$' `
if [[ "$result" != "" ]]
then
    echo "密码合规  "$result
else
    echo ""
fi

打印

读取一行:BCDEabcde!@#

读取一行:0123456789

读取一行:ABCabc012@#
密码合规  ABCabc012@#
读取一行:ABCabc123_
密码合规  ABCabc123_
读取一行:ABCDEabcde123456!@#$%
密码合规  ABCDEabcde123456!@#$%
读取一行:ABCabc8888

读取一行:ssdfs999

读取一行:WERWQ369

读取一行:W&1E@wr8945
密码合规  W&1E@wr8945
读取一行:w@#$123

读取一行:weqwr@#$!@!@#

读取一行:GATEWAY=192.168.81.2

读取一行:

读取一行:

读取一行:

读取一行:

读取一行:

神秘代码

awk 'gsub(" ", "")' testseninfo.log |awk '{print substr($0, index($0, "password") )}'
awk '{print substr($0, index($0, "password") )}' testseninfo.log |awk '{print substr($0,0, index($0, ",")-1 )}'|awk '{print NR, $0}'
awk '{print substr($0, index($0, "password") )}' testseninfo.log |awk '{print substr($0,0, index($0, ",")-1 )}'|awk '{print NR, $0}'

给老婆用的shell

#!/bin/bash



filename=testseninfo.log
echo '**************'

count=1
#cat $filename | while read line
awk '{print NR, $0}' $filename | while read line
do

B="password"
if [[ $line == *$B* ]]
then
    echo ""
    echo "包含进入筛选"$line
    a=${line#*password}
    b=${a%%,*}
    echo "第"$count'行最终结果  ' $b
    echo ""
else
    echo ""
    echo "第"$count"行,此行不包含  --   "$line
    echo ""
fi
let "count++"
done
#!/bin/bash



#filename=testseninfo.log 
#B="password"

firstfun(){
# 需要正则的密码文件
filename=$1
# 需要对特定密码进行截取 如password  passwd
passwd=$2



#echo '**************'

count=1
#cat $filename | while read line
# 读取需要正则的密码文件的每一行  NR 是打印每一行
awk '{print NR, $0}' $filename | while read line
do

if [[ $line == *$passwd* ]]
then
    #截取password 后面的内容  xxxxpasswordxxxx,xxxx  => passwordxxx,xxxx
    xxpd=`echo $line|awk '{print  substr($0, index($0, "'$passwd'") )}'`
    # 截取xxpd的,前面的内容  passwordxxx,xxx=>passwordxxx
    pd=${xxpd%%,*}

#if[[$zhengze]]then
if [[ ${#pd} -ge 8 && "$pd" =~ $passwd[:=]* && "$pd" == *[[:lower:]]* && "$pd" == *[[:upper:]]* && "$pd" == *[0-9]*  && "$pd" == *[[:punct:]]* ]]
#if[[`$zhengze`]]
then
    echo "文件名:" $filename"行号:"$count" "$pd
fi




fi
let "count++"
done
}

#filename 文件名文件
#password 密码文件
#该方法用于读取文件并循环读取密码文件
fun1(){
filename=$1
password=$2

#读取每一行文件名文件
awk '{print  $0}' $filename | while read line
do

#循环读取每一行密码文件
awk '{print  $0}' $password | while read line1
do
  echo "------文件名:"$line "匹配密码"$line1"----------"

  firstfun $line $line1
done    

  

done
}


#firstfun testseninfo.log passwd
# 调用方法 fun1 文件名文件 密码文件
fun1 wenjianming.txt mm.tx
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值