Linux 如何在Bash脚本中显示密码最小长度的输出
我的问题是,如何编辑脚本,以便在密码最小长度大于或等于10时,它将显示“漏洞:否” 提前感谢。:) 我的脚本Linux 如何在Bash脚本中显示密码最小长度的输出,linux,bash,scripting,audit,Linux,Bash,Scripting,Audit,我的问题是,如何编辑脚本,以便在密码最小长度大于或等于10时,它将显示“漏洞:否” 提前感谢。:) 我的脚本 #!/bin/bash passminlen=`grep "^minlen /etc/security/pwquality.conf` if [[ $passminlen == "minlen=10" ]] then isVulnerable="no" else isVulnerable="Yes" fi echo echo "Audit Criteria: Password min
#!/bin/bash
passminlen=`grep "^minlen /etc/security/pwquality.conf`
if [[ $passminlen == "minlen=10" ]]
then
isVulnerable="no"
else
isVulnerable="Yes"
fi
echo
echo "Audit Criteria: Password minimum length is 10 or greater"
echo "Vulnerability: $isVulnerable"
echo "Details: See Below"
echo
echo "Source of info:"
echo "grep ^minlen /etc/security/pwquality.conf
echo
echo "Output: $passminlen"
echo
echo "Remediation: "
echo "If password minimum length is lesser than 10 please edit the following under /etc/security/pwquality.conf."
echo
您可以使用
awk-F='$1==“minlen”{print$2}'/etc/security/pwquality.conf
以普通数字的形式获取最小长度。-F=
告诉awk
在“=”字符上拆分行,脚本检查字段#1(在“=”之前)是否为“minlen”,如果是,则打印字段#2(在“=”之后)
还有几件事需要注意;首先,可能没有定义minlen,所以您需要检查它。您可能需要检查多个定义。另外,在bash中进行数字比较时,最简单的方法是使用(())
而不是[[]]]
。我建议使用$()
而不是反勾号
大概是这样的:
passminlen=$(awk -F= '$1=="minlen" {print $2}' /etc/security/pwquality.conf)
if [[ -z "$passminlen" ]]
then # Minimum length is not defined
isVulnerable="yes"
elif [[ "$passminlen" = *$'\n'* ]]
then # Minimum length is multiply defined; this is weird
isVulnerable="yes"
elif (( $passminlen" >= 10 ))
then
isVulnerable="no"
else
isVulnerable="Yes"
fi
您要做的是检查conf文件中“minlen”的值,因此您应该中断grep的结果,只取
=
例如
请注意:
- 我更喜欢使用
命令替换而不是反引号$(…)
- 我用它来减少grep的输出
grep“^minlen/etc/security/pwquality.conf”的输出添加到您的问题中。啊,非常感谢您为参数扩展提供的链接是我所需要的,因为我一直在尝试将minlen和=。
#!/bin/bash
passminlen="$(grep -e "^minlen" /etc/security/pwquality.conf)"
if [ "${passminlen#*=}" -ge 10 ]; then
isVulnerable="no"
else
isVulnerable="Yes"
fi