check_https_检测证书是否到期.sh

check_https_检测证书是否到期.sh

#!/bin/bash
# 检测https证书有效期
# 使用Telegram通知证书少于10天的网址
# Telegram需要申请机器人 具体请参阅zabbix 文档有关telegram的讲解
# 复制到/data/shell/目录下 mkdir -p /data/shell/ssh_url.txt 创建域名文件
# url.txt 被检测的网址放到里面即可
# www.baidu.com 
# www.qq.com
# crontab -e 里面添加 0 11 * * * /data/shell/check_https.sh &  \\ 每天11点检测
Token='1159125500:AAEnBcC8Vt_BKOXIIZNabpDhyRN6zwPMwcY9'
ChatID='-4774704889'
source /etc/profile

while read line; do
    end_time=$(echo | timeout 1 openssl s_client -servername $line -connect $line:443 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | awk -F '=' '{print $2}' )
    ([ $? -ne 0 ] || [[ $end_time == '' ]]) # &&  exit 10

    end_times=`date -d "$end_time" +%s `
    current_times=`date -d "$(date -u '+%b %d %T %Y GMT') " +%s `

    let left_time=$end_times-$current_times
    days=`expr $left_time / 86400`

    if [ $days -eq 0 ];then
        continue
    fi

    if [ $days -lt 0 ] ; then
        curl -X GET "https://api.telegram.org/bot$Token/sendMessage" -d "chat_id=$ChatID &text=$line的证书已过期 过期天数为 $days 天"
        continue
    fi

    if [ $days -lt 10 ] ; then
        curl -X GET "https://api.telegram.org/bot$Token/sendMessage" -d "chat_id=$ChatID &text=$line的证书还剩 $days 天过期 存在风险"
    fi


done < /data/shell/ssh_url.txt

curl -X GET "https://api.telegram.org/bot$Token/sendMessage" -d "chat_id=$ChatID &text=所有证书均已检测完毕!!!"


Teo

You must be logged in to post a comment