要求必须包含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