监控证书SSL到期天数并调用钉钉发送消息

为什么需要写此脚本

由于线上有一批证书快要到期了就不行每次去网站上一个个打开盯着浪费时间股编写此脚本

在任意一台服务器编写次脚本

#!/bin/bash
##############################################################
# File Name: check_ssl.sh
# Version: V1.0
# Author: guoxiangfu
# EMail: guoxiangfu@dyrs.com.cn
# Created Time : 2022-03-11 09:54:39
# Description:
##############################################################
 # 检测https证书有效期
 if [ $# -ne 1 ]; then
   echo "请输入需要的检查域名: 例如 /check_ssl.sh www.92fuge.com"
 else
    #参数设置为host
    host=
    #最后到期时间
     #end_date=`echo |openssl s_client -servername $host  -connet $host:443 2nssl x509 -noout -dates|awk -F '=' '/notAfter/{print }'`
    #最后到期时间转换为时间戳
    end_data=`date +%s -d "$(echo |openssl s_client -servername $host  -connect $host:443 2>/dev/null | openssl x509 -noout -dates|awk -F '=' '/notAfter/{print }')"`
    #当前时间戳
    new_date=$(date +%s)
    #计算SSL证书截止到现在的过期天数
    #计算SSL正式到期时间和当前时间的差值
    days=$(expr $(expr $end_data - $new_date) / 86400)
    echo -e "3[31m 您的$host 证书 还有${days}天到期  请谨慎处理 3[0m"
 fi

在终端执行一下查看结果

图片[1]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站

批量检测域名

mkdir -p /web_www/jiaoben/sh/
cat >  /web_www/jiaoben/sh/ssl.conf << EOF
www.92fuge.com
www.baidu.com
www.aliyun.com
www.qq.com
EOF

这里使用for循环

 for i in `cat ssl.conf`; do ./check_ssl.sh $i; done
图片[2]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站

调用钉钉机器人发消息

  • 在群里开启钉钉机器人
  • 参考: https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
  • 我这里已经开启过了 脚本调用
  • 群设置->只能群助手->机器人->Webhook:
图片[3]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站
图片[4]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站
图片[5]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站
图片[6]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站
图片[7]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站

脚本调用 webhook

图片[8]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站
#!/bin/bash
##############################################################
# File Name: check_ssl.sh
# Version: V1.0
# Author: guoxiangfu
# EMail: guoxiangfu@dyrs.com.cn
# Created Time : 2022-03-11 09:54:39
# Description:
##############################################################
 # 检测https证书有效期
 if [ $# -ne 1 ]; then
   echo "请输入需要的检查域名: 例如 /check_ssl.sh www.92fuge.com"
 else
    #参数设置为host
    host=
    #最后到期时间
     #end_date=`echo |openssl s_client -servername $host  -connet $host:443 2nssl x509 -noout -dates|awk -F '=' '/notAfter/{print }'`
    #最后到期时间转换为时间戳
    end_data=`date +%s -d "$(echo |openssl s_client -servername $host  -connect $host:443 2>/dev/null | openssl x509 -noout -dates|awk -F '=' '/notAfter/{print }')"`
    #当前时间戳
    new_date=$(date +%s)
    #计算SSL证书截止到现在的过期天数
    #计算SSL正式到期时间和当前时间的差值
    days=$(expr $(expr $end_data - $new_date) / 86400)
    if [ $days -lt 20 ]; then
       context="您的$host 证书 还有${days}天到期  请谨慎处理" 
       curl "https://oapi.dingtalk.com/robot/send?access_token=token" \
           -H 'Content-Type: application/json' \
           -d "{\"actionCard\": {\"text\": \"$context\",},\"msgtype\": \"actionCard\"}"
    fi
   
 fi

图片[9]-监控证书SSL到期天数并调用钉钉发送消息-我的运维技术站

计划任务的编写

#!/bin/bash
##############################################################
# File Name: crontab.ssl.sh
# Version: V1.0
# Author: guoxiangfu
# EMail: guoxiangfu@dyrs.com.cn
# Created Time : 2022-03-11 11:07:10
# Description:
##############################################################
for i in `cat /web_www/jiaoben/sh/ssl.conf`; do /web_www/jiaoben/sh/check_ssl.sh $i; done
echo "0 2 * * * /bin/sh /web_www/jiaoben/sh/crontab.ssl.sh  2>&1 "  >> /var/spool/cron/root
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞4000赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称 夸夸
夸夸
还有吗!没看够!
表情代码图片

    暂无评论内容