检查CRL更新日期的Bash脚本

检查CRL更新日期的Bash脚本,bash,shell,certificate,Bash,Shell,Certificate,我正在尝试编写一个Bash脚本,可以用于check_mk代理检查。它需要检查CRL需要在什么时间内更新 根据检查结果,它有3个退出代码(超过50天续订日期、少于50天、少于30天) 目前,我在将日期检查的输出转换为中的“大于XX天”设置时遇到问题。请参阅下面的脚本 #!/bin/bash # Script that checks when the Certificate Revocation List (CRL) needs to be updated # Declare variables

我正在尝试编写一个Bash脚本,可以用于check_mk代理检查。它需要检查CRL需要在什么时间内更新

根据检查结果,它有3个退出代码(超过50天续订日期、少于50天、少于30天)

目前,我在将日期检查的输出转换为中的“大于XX天”设置时遇到问题。请参阅下面的脚本

#!/bin/bash
# Script that checks when the Certificate Revocation List (CRL) needs to be updated

# Declare variables
CRL_PATH="/srv/ca-cust/pki/crl.pem"
CRL_UPDATE="openssl crl -in "$CRL_PATH" -noout -nextupdate | awk -F= '{print $2}'"
WARN_DAYS="$1"
CRIT_DAYS="$2"
WARN_SEC="$((WARN_DAYS * 86400))"
CRIT_SEC="$((CRIT_DAYS * 86400))"

# Check if arguments WARN_DAYS and CRIT_DAYS are present
if [ -z "$WARN_DAYS" ]; then
    echo "Missing argument 1 WARN_DAYS. Exiting."
    exit 3
fi

if [ -z "$CRIT_DAYS" ]; then
    echo "Missing argument 2 CRIT_DAYS. Exiting."
    exit 3
fi

# Check when the Certificate Revocation List (CRL) needs to be updated
if ! "$CRL_UPDATE" | xargs -I{} date -d {} +%s` -gt '30'` 
then
    echo "CRL $CRL_PATH Needs to be updated within $CRIT_DAYS days! Renew and reload services ASAP!"
    exit 2
elif ! "$CRL_UPDATE" | xargs -I{} date -d {} +%s` -gt '50'`
then
    echo "CRL $CRL_PATH Will need to be updated in less than $WARN_DAYS days. Please renew and reload services."
    exit 1
else
    echo "CRL $CRL_PATH Will need to be updated in more than $WARN_DAYS days. No action required."
    exit 0
fi

您需要对照今天的日期+%s检查所讨论日期的+%s。然后,您需要从今天的日期中减去相关日期,看看它是否大于50