shell脚本监控SSL证书有效期推送钉钉

本文介绍了两种方法来监控HTTPS证书的有效期,适用于公网在线域名和已有的SSL证书文件。通过Shell脚本,结合openssl工具,检测证书过期时间,并在证书即将到期时,利用 DingTalk 自动发送告警消息,确保网站安全运行。
摘要由CSDN通过智能技术生成

实现效果

在这里插入图片描述

方法一在线SSL

此方法针对公网在线域名SSL情况


#!/bin/bash
# 检测https证书有效期
# 官方参考文档:https://developers.dingtalk.com/document/app/custom-robot-access

TOKEN="https://oapi.dingtalk.com/robot/send?access_token=TOKEN"

dir="/root"

for host in `cat ${dir}/check_domains.txt` #读取存储了需要监控的域名文件

do

 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 $2}')"`
 #当前时间戳
 
 new_date=$(date +%s) #计算SSL证书截止到现在的过期天数
 
 days=$(expr $(expr $end_data - $new_date) / 86400) #计算SSL正式到期时间和当前时间的差值
 
 if [ $days -lt 600 ]; #当到期时间小于n天时,发钉钉群告警
 
 then
 
    curl ${TOKEN} -H 'Content-Type: application/json' -X POST --data '{"msgtype":"text","text":{"content":"告警域名:'$host'    ssl证书即将到期,剩余:'$days' 天"} , "at": {"isAtAll": true}}'
    
 fi
 
done

方法二SSL证书文件

此方法针对有域名crt证书文件的情况

#!/bin/bash
# 检测https证书有效期
# 官方参考文档:https://developers.dingtalk.com/document/app/custom-robot-access

TOKEN="https://oapi.dingtalk.com/robot/send?access_token=Token"

# 获取文件夹下所有文件

dir="/root/Check_domain_ssl/crt_all/" # 证书文件目录

files=$(ls $dir) # 遍历目录下所有文件名

for file in ${files}

do


 end_date=`date +%s -d "$(echo| openssl x509 -noout -in $dir$file -dates|awk -F '=' '/notAfter/{print $2}')"`
 # 获取证书过期当前时间戳
 
 new_date=$(date +%s) # 计算SSL证书截止到现在的过期天数
 
 days=$(expr $(expr $end_date - $new_date) / 86400) #计算SSL正式到期时间和当前时间的差值
 
 if [ $days -lt 60 ]; # 当到期时间小于n天时,发钉钉群告警,https://www.cnblogs.com/jjzd/p/6397495.html,https://www.jianshu.com/p/9f3017d966a4
 
 then
    #去掉file的后缀crt
    curl ${TOKEN} -H 'Content-Type: application/json' -X POST --data '{"msgtype":"text","text":{"content":"告警域名:'${file%.crt}',SSL证书有效期剩余:'$days' 天!注意提前续签更新证书!"} , "at": {"isAtAll": true}}'
    
 fi
 
done
### 回答1: 我可以为您提供一些建议: 1. 使用shell脚本调用钉钉API,将执行结果发送到钉钉群中。 2. 使用Python脚本模拟登录钉钉账号,将执行结果发送到钉钉群中。 3. 使用shell脚本执行结果,通过消息队列发送到钉钉群中。 4. 使用curl命令将shell脚本的执行结果发送到钉钉群中。 ### 回答2: 编写一个shell脚本,将执行结果推送钉钉系统的消息群组中。实现这个目标,可以使用钉钉提供的开放API接口来发送消息。 首先,我们需要在钉钉开放平台上创建一个自定义机器人,并记录下钉钉提供的Webhook地址。 然后,在shell脚本中,我们可以使用curl命令来发送HTTP POST请求,将脚本的执行结果作为消息内容发送到钉钉群组。 以下是一个示例shell脚本,其中将"your_webhook"替换为自己创建的机器人Webhook地址: ```shell #!/bin/bash # 执行命令,并将结果保存到变量中 result=$(your_command) # 组装要发送的消息内容 message="执行结果:${result}" # 发送HTTP POST请求到钉钉机器人 curl -H "Content-Type: application/json" -X POST \ -d '{"msgtype": "text", "text": {"content": "'"${message}"'"}}' \ https://oapi.dingtalk.com/robot/send?access_token=your_webhook ``` 这个脚本首先执行一个命令,将其结果保存到变量中。然后,将这个结果作为消息内容,使用curl命令发送HTTP POST请求到钉钉机器人的Webhook地址。发送的消息类型为文本。 当脚本执行后,它将发送执行结果到指定的钉钉群组中。你可以将命令替换为你想要执行的任何命令,以及自定义发送的消息内容。 请确保在执行脚本之前,在你的机器人设置中验证了你的Webhook地址,并在脚本中替换“your_webhook”为你自己的Webhook地址。 ### 回答3: 推送钉钉脚本可以用于将shell脚本的执行结果发送到指定的钉钉群组或用户。下面是一个简单的脚本示例: ```shell #!/bin/bash # 设置钉钉机器人webhook地址 webhook="https://oapi.dingtalk.com/robot/send?access_token=your_access_token" # 获取shell脚本执行结果 result=$(command_to_execute) # 构建JSON数据 data="{\"msgtype\": \"text\", \"text\": {\"content\": \"$result\"}}" # 使用curl发送POST请求到钉钉机器人webhook地址 curl -H "Content-Type: application/json" -d "$data" $webhook ``` 在上面的示例中,首先需要设置钉钉机器人的webhook地址,将`your_access_token`替换为你的具体地址。然后,使用`command_to_execute`来替换为需要执行的shell命令,并将执行结果保存到`result`变量中。接下来,构建JSON数据,其中`content`字段为执行结果。最后,使用curl命令发送POST请求并将数据发送到钉钉机器人的webhook地址。 使用该脚本,你可以将shell脚本的执行结果推送钉钉群组或用户中,方便实时查看执行情况和结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值