#!/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=所有证书均已检测完毕!!!"