Hugo博客公告弹窗

域名有效期监控的最佳方案

   
文章摘要
摘要小助理今天溜号啦……😜

不喜欢开场白,还是直接上干货…

使用方法:

  1. for d in baidu.com bing.com 修改为你的域名,多个用空格隔开

  2. 登录https://slack.com/get-started 获取Webhook URL 教程在后面

  3. https://hooks.slack.com/services/xxx/xxx/xxx 修改为你的Webhook URL

  1. 测试要点:修改参数n=129600000将改好的脚本放到宝塔面板计划任务测试,运行,就会收到消息,测试收到消息再改回来2592000(单位秒),也就是30天到期提醒

5.微信接收消息技巧: 将你的邮件转发到QQ邮箱,打开微信,设置–通用–辅助功能–QQ邮箱提醒 slack默认15分钟发送一次新的消息

#!/bin/bash
#检测域名是否过期
#博客:blog.leshans.eu.org
#日期:20240123
#版本:v0.1

#当前日期时间戳,用于和域名的到期时间做比较
currentTimestamp=`date +%s`

#检测whois命令是否存在,不存在则安装whois包
isInstallWhois()
{
    which whois >/dev/null 2>/dev/null
    if [ $? -ne 0 ]
    then
        yum install -y whois || apt-get install whois -y
    fi
}

notify()
{
    expiredate=`whois $1 |grep 'Registry Expiry Date' |awk '{print $4}' |cut -d 'T' -f 1`
    #上面的$1代表域名,遍历循环出来的。
    #如果e_d的值为空,则过滤关键词'Expiration Time'
    if [ -z "$expiredate" ]
    then
        expiredate=`whois $1|grep 'Expiration Time' |awk '{print $3}'`

    fi
    #将域名过期的日期转化为时间戳
    expiredatestamp=`date -d $expiredate +%s`
    #计算半个月一共有多少秒
    # 15d 1296000  30d 2592000 35d 3024000 40d 3456000
    n=2592000
    timeBeforce=$[$expiredatestamp - $n] #过期时间30d以前的时间戳
    timeAfter=$[$expiredatestamp + $n] #过期时间30d以后的时间戳
    if [ $currentTimestamp -ge $timeBeforce ] && [ $currentTimestamp -lt $expiredatestamp ]
    then
        curl -X POST \
            -H 'Content-type: application/json' \
            --data '{"text":":warning:域名 '$1' 将在30天内过期. 域名 '$1' 到期日是 '$expiredate' @xuexiaobai"}' \
            https://hooks.slack.com/services/xxx/xxx/xxx
    fi
    if [ $currentTimestamp -ge $expiredatestamp ] 
    then
        curl -X POST \
            -H 'Content-type: application/json' \
            --data '{
                "text":":interrobang:域名 '$1' 已过期. 域名 '$1' 到期日是 '$expiredate' @xuexiaobai"}' \
            https://hooks.slack.com/services/xxx/xxx/xxx
    fi
}

#检测上次运行的whois查询进程是否存在
#若存在,需要杀死进程,以免影响本次脚本执行
if pgrep whois &>/dev/null
then
    killall -9 whois
fi

isInstallWhois

for d in baidu.com bing.com
do
  notify $d
done

获取Webhook URL教程

  1. 创建 Slack 团队:

    • 如果你还没有 Slack 团队,可以在 Slack 官方网站上创建一个免费的团队账户。
  2. 创建工作区:

    • 一旦你的团队创建好,你可以创建一个工作区,用于组织你的团队成员和频道。
  3. 创建频道:

    • 频道是 Slack 中组织和分类消息的方式。你可以创建不同的频道,例如项目频道、团队频道等。
    • 在 Slack 的左侧导航栏中,点击加号(+)按钮,然后选择 “创建频道”。
  4. 添加团队成员:

    • 在 Slack 中邀请团队成员加入工作区,以便他们能够参与到你的工作和讨论中。
  5. 获取 Incoming Webhook URL:

    • 如果你想使用脚本中的 Slack 通知功能,你需要创建一个 Incoming Webhook。
    • 在 Slack 中,进入你想要接收通知的频道,点击频道名称,然后选择 “集成”。
    • 在 “集成” 页面中,找到 “Incoming Webhooks” 并点击 “添加到此频道”。
    • 配置 Incoming Webhook,并获取 Webhook URL。
  6. 使用 Slack Webhook URL:

    • 在脚本中,你需要将 Slack Webhook URL 替换为你的 Incoming Webhook URL。这个 URL 用于向 Slack 发送通知消息。
  7. 运行脚本:

    • 通过终端或脚本执行环境运行你的脚本,以开始监控域名有效期并发送通知到 Slack。
  8. 查看通知:

    • 前提是域名过期或接近过期,Slack 将会收到相应的通知消息。
CC BY-NC-SA 4.0 转载请注明
最后更新于 2024-11-20 16:13
clarity统计