【问题标题】:How to display output for password minimum length in Bash script如何在 Bash 脚本中显示密码最小长度的输出
【发布时间】:2020-02-16 15:48:45
【问题描述】:

我的问题是,如何编辑脚本,如果密码最小长度大于或等于 10,那么它将显示“漏洞:否”?

提前致谢。 :)

Output

我的脚本

#!/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

【问题讨论】:

  • grep "^minlen /etc/security/pwquality.conf 的输出添加到您的问题中。

标签: linux bash scripting audit


【解决方案1】:

您可以使用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

【讨论】:

    【解决方案2】:

    你要做的是检查你的conf文件中“minlen”的值,所以你应该打破grep的结果,只取=之后的值

    例如

    #!/bin/bash
    passminlen="$(grep -e "^minlen" /etc/security/pwquality.conf)"
    if [ "${passminlen#*=}" -ge 10 ]; then
      isVulnerable="no"
    else
      isVulnerable="Yes"
    fi
    

    注意:

    • 我更喜欢$(...) 命令替换而不是反引号。
    • 我使用parameter expansion 来减少grep 的输出。

    【讨论】:

    • 啊,非常感谢您为参数扩展提供的链接是我所需要的,因为我一直在尝试将 minlen 和 = 之间的值分开。
    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 2018-07-07
    • 2016-03-09
    • 2012-05-17
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多