公司业务会使用ssl证书来确保域名安全被访问,免费证书现在有效期为三个月更换频率比较快,使用curl命令进行检测然后根据对应监控软件进行提前告警关注

脚本内容

curl:
-I 获取http头部响应信息
-v 显示详细操作信息
-s 静默输出

upload successful

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash

#以百度为例
URL=https://www.baidu.com
#获取证书到期时间
expiry_date=$(curl -Ivs --connect-timeout 30 $URL 2>&1 | awk -F': |GMT' '/expire date/{print$2}')
#将日期转换为秒
date_seconds=$(date -d "$expiry_date" +%s)
#获取当前时间秒数
now_seconds=$(date +%s)
#将到期秒数减去当前秒数
diff_seconds=$((date_seconds - now_seconds))

#除掉86400秒即可算出剩余天数
diff_days=$((diff_seconds / 86400))
#输出剩余天数
echo $diff_days

监控告警

以zabbix简单举例,以上脚本已吧剩余天数输出,不局限监控软件根据自己环境需求自定义

  1. 在/etc/zabbix/zabbix_agent.conf添加自定义脚本参数UserParameter=exprie,bash /home/test/expire.sh
  2. systemctl restart zabbix-agent
  3. 在zbx界面对应主机项添加监控项
  4. 创建触发器(last(/Zabbix server/expire,#1:now-24h)=7)当数值等于7时钉钉告警。 以往钉钉告警文章参考