You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本实现域名过期自动发邮件及过期天数计算求助

实现域名过期日期与当前日期的对比及天数计算

嘿,作为新手能写出获取域名过期日期并发送邮件的脚本已经超棒啦!接下来要实现的日期对比和天数差计算其实很直观,我来一步步帮你搞定:

核心思路

要计算两个日期的天数差,最可靠的方法是把日期转换成Unix时间戳(从1970年1月1日00:00:00 UTC到该日期的秒数),然后用「过期日期时间戳 - 当前日期时间戳」,再除以一天的秒数(86400)就能得到准确的天数差。

具体步骤及脚本修改

1. 提取并转换过期日期为时间戳

首先得从whois输出里准确抓取过期日期,不同域名后缀的whois字段可能有差异(比如.pl域名常用Registry Expiry Date),抓取后用date命令把日期字符串转成时间戳。

2. 获取当前时间戳

用date -u +%s获取当前UTC时间的时间戳(用UTC是为了避免时区差异导致的计算误差)。

3. 计算剩余天数并判断状态

用整数除法计算时间戳差值,再根据结果判断域名是已过期、即将过期还是正常状态。

修改后的完整脚本示例

#!/bin/bash

# 要检测的域名列表
DOM="onet.pl wp.pl"
# 接收提醒邮件的地址
EMAIL="your-alert-email@example.com"

for d in $DOM; do
    echo "正在检测域名: $d"
    
    # 从whois结果中提取过期日期(根据实际whois输出调整字段名)
    expiry_date=$(whois $d | grep -i "registry expiry date" | awk '{print $4, $5, $6, $7, $8}')
    
    # 处理无法获取过期日期的情况
    if [ -z "$expiry_date" ]; then
        echo "⚠️ 无法获取域名 $d 的过期日期,跳过检测"
        continue
    fi
    
    # 将过期日期转换为UTC时间戳
    expiry_timestamp=$(date -ud "$expiry_date" +%s)
    # 获取当前UTC时间戳
    current_timestamp=$(date -u +%s)
    
    # 计算剩余天数(整数除法)
    days_remaining=$(( (expiry_timestamp - current_timestamp) / 86400 ))
    
    # 根据天数差生成状态描述
    if [ $days_remaining -lt 0 ]; then
        status="❌ 已过期 $((-days_remaining)) 天"
    elif [ $days_remaining -eq 0 ]; then
        status="⚠️ 今天过期!"
    elif [ $days_remaining -le 7 ]; then
        status="⚠️ 仅剩 $days_remaining 天过期,尽快处理!"
    else
        status="✅ 剩余 $days_remaining 天过期"
    fi
    
    # 准备邮件内容
    mail_subject="域名 $d 过期状态提醒"
    mail_body="域名: $d\n过期日期: $expiry_date\n当前状态: $status"
    
    # 发送邮件(可根据服务器环境替换为sendmail等命令)
    echo -e "$mail_body" | mail -s "$mail_subject" $EMAIL
    
    echo "📧 已发送域名 $d 的状态提醒邮件"
done

关键注意事项

  • whois字段适配:不同域名后缀的whois输出字段可能不同,比如有的是Expiration Date而非Registry Expiry Date,你可以先手动执行whois onet.pl查看输出,调整grep的参数。
  • 时区一致性:一定要用UTC时间(date -u)计算,避免服务器时区与whois返回时区不一致导致的误差。
  • 异常扩展:脚本里加了无法获取日期的处理,你还可以根据需要添加邮件发送失败的提示、日志记录等功能。

内容的提问来源于stack exchange,提问作者ashaneen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:03:29