首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[bash]bash脚本监测证书到期时间并告警

[bash]bash脚本监测证书到期时间并告警

作者头像
用户9314062
发布2022-05-20 14:07:19
发布2022-05-20 14:07:19
1.5K0
举报
文章被收录于专栏:LINUX开源玩家LINUX开源玩家

为了维护方便用openvpn搭建了几个V**服务器,没想到时间太长,证书过期了导致没法登陆。

为了避免类似情况,特地写个脚本监测证书到期时间,如果快到期了就通过钉钉告警。

1. 钉钉告警脚本

前面曾经分享过一个监测分布式存储ceph状态并在非监控状态时报警的脚本,我们这里把它变成一个函数,方便其他脚本调用。

脚本:sendDing.sh

代码语言:javascript
复制
#!/usr/bin/env bash

MobileNumber="1xxxxxxxxxx"
TOKEN="456dxxx2aba9d75bfd8f3cac41dkjfwefjeccc9ebd598378xwdwfdgg"
TEXT="测试"

toDD () {
    PHONE=$1
    URL="https://oapi.dingtalk.com/robot/send?access_token=$2"
    DING="curl -H \"Content-Type: application/json\" -X POST --data '{\"msgtype\": \"text\", \"text\": {\"content\": \"$3 done!\"}, \"at\": {\"atMobiles\": [${PHONE}], \"isAtAll\": false}}' ${URL}"
    eval $DING
}

toDD $MobileNumber $TOKEN $TEXT

替换手机号码和钉钉令牌测试运行,钉钉上应该可以接受到“测试”,以后其他脚本调用脚本sendDing.sh的函数toDD,后面跟上三个参数(手机号码,钉钉令牌,发送文本)就行了。

2. 监测证书到期时间脚本

为了方便调用,监测语句也用函数

代码语言:javascript
复制
CheckDate () {
    caEnd=`openssl x509 -in $1 -noout -enddate | cut -d"=" -f2`
    epochCa=`date +%s -d "$caEnd"`
    epochNow=`date +%s`

    seconds_to_expire=`expr $epochCa - $epochNow`
    days_to_expire=`expr $seconds_to_expire / 86400`
    echo $days_to_expire
}

这个函数会返回被测试的证书剩余的到期天数。

3. 合并处理

最后在证书监测脚本里面调用钉钉告警

一般来说证书都不止一个,所以用for循环逐一监测处理。

代码语言:javascript
复制
#!/usr/bin/env bash

DIR="/path/to/ovpnconfg/"
MobileNumber="1xxxxxxxxxx"
TOKEN="456dxxx2aba9d75bfd8f3cac41dkjfwefjeccc9ebd598378xwdwfdgg"

#通过钉钉发送证书名和到期天数
SendtoDB () {
    caDname=`dirname $1`
    caBname=`basename $caDname`

    TXT="$caBname'到期天数小于'$2"
    #调用sendDing.sh
    source /path/to/sendDing.sh
    toDD $MobileNumber $TOKEN $TXT
}

#循环调用CheckDate,检测所有证书,到期天数小于30天就用钉钉告警
checkExec () { 
for CA in `find $1 -name ca.crt`
  do
        T=`CheckDate $CA`
        if [[ $T -lt 30 ]]; then
            SendtoDB $CA $T
        fi
  done
}

checkExec $DIR

最后用crontab设置定时任务,每天运行一次即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LINUX开源玩家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档