edu.kg域名到期飞书提醒
域名到期监控告警(Shell + RDAP + 飞书)
注意:
后续更新在GitHub上。懒得手动复制,可以直接克隆
git clone https://github.com/sky1wang1/domain-monitor.git
功能
- 支持多个域名监控
- 支持
.kg等特殊后缀域名 - 使用 RDAP 查询域名注册到期时间
- 亚洲时间(Asia/Tokyo)每天 12:00 检查
- 到期前分级提醒:
- 90 天
- 60 天
- 30 天
- 7 天
- 3 天
- 飞书机器人告警
- 状态记录避免重复提醒
目录结构
/root/domain-monitor/
├── domains.txt # 域名列表
├── domain_check.sh # 域名检查脚本
├── feishumsg.sh # 飞书通知脚本
└── state/ # 提醒状态记录
创建目录:
mkdir -p /root/domain-monitor/state
1. 域名列表
文件:
/root/domain-monitor/domains.txt
示例:
example-random.edu.kg
example.com
test-domain.net
每行一个域名。
2. 飞书通知脚本
文件:
/root/domain-monitor/feishumsg.sh
内容:
#!/bin/bash
MSG="$1"
TOKEN="$2"
if [ -z "$MSG" ] || [ -z "$TOKEN" ]; then
echo "Usage: $0 <message> <token>"
exit 1
fi
JSON=$(jq -n \
--arg text "$MSG" \
'{
msg_type: "text",
content: {
text: $text
}
}'
)
curl -s \
-X POST \
-H "Content-Type: application/json" \
-d "$JSON" \
"https://open.feishu.cn/open-apis/bot/v2/hook/${TOKEN}"
授权:
chmod +x /root/domain-monitor/feishumsg.sh
3. 域名检测脚本
文件:
/root/domain-monitor/domain_check.sh
内容:
#!/bin/bash
BASE_DIR="/root/domain-monitor"
DOMAIN_FILE="$BASE_DIR/domains.txt"
STATE_DIR="$BASE_DIR/state"
# 飞书机器人Token
TOKEN="${FEISHU_TOKEN}"
send_msg(){
/bin/bash \
$BASE_DIR/feishumsg.sh \
"$1" \
"$TOKEN"
}
while read domain
do
[ -z "$domain" ] && continue
# 根据域名后缀选择RDAP
case "$domain" in
*.kg)
API="http://rdap.cctld.kg/domain/$domain"
;;
*)
API="https://rdap.org/domain/$domain"
;;
esac
expire=$(curl -s "$API" \
| jq -r '
.events[]
| select(.eventAction=="Record expires")
| .eventDate' 2>/dev/null)
if [ -z "$expire" ] || [ "$expire" = "null" ]
then
echo "$domain 查询失败"
continue
fi
expire_ts=$(date -d "$expire" +%s)
now_ts=$(date +%s)
remain_days=$((
(expire_ts-now_ts)/86400
))
echo "$domain 剩余 $remain_days 天"
# 判断提醒等级
level=""
if [ "$remain_days" -le 3 ]; then
level="3"
elif [ "$remain_days" -le 7 ]; then
level="7"
elif [ "$remain_days" -le 30 ]; then
level="30"
elif [ "$remain_days" -le 60 ]; then
level="60"
elif [ "$remain_days" -le 90 ]; then
level="90"
fi
# 未达到提醒时间
[ -z "$level" ] && continue
state_file="$STATE_DIR/$domain"
last_level=$(cat "$state_file" 2>/dev/null)
# 已经提醒过
if [ "$last_level" = "$level" ]
then
continue
fi
msg="
⚠️ 域名到期提醒
域名:
$domain
到期时间:
$expire
剩余:
$remain_days 天
提醒等级:
剩余 ${level} 天
检测时间:
$(TZ=Asia/Tokyo date '+%Y-%m-%d %H:%M:%S')
"
send_msg "$msg"
# 保存提醒状态
echo "$level" > "$state_file"
done < "$DOMAIN_FILE"
授权:
chmod +x /root/domain-monitor/domain_check.sh
4. 配置飞书 Token
不要直接写入脚本。
设置环境变量:
export FEISHU_TOKEN="your_feishu_bot_token"
测试:
echo $FEISHU_TOKEN
5. 手动测试
执行:
/root/domain-monitor/domain_check.sh
示例输出:
example-random.edu.kg 剩余 64 天
提醒后生成状态文件:
/root/domain-monitor/state/example-random.edu.kg
内容:
90
表示已经发送过 90 天提醒。
6. 定时任务
编辑:
crontab -e
添加:
0 12 * * * TZ=Asia/Tokyo FEISHU_TOKEN=your_feishu_bot_token /root/domain-monitor/domain_check.sh >/dev/null 2>&1
说明:
- 每天 12:00 执行
- 使用亚洲时间
- 自动发送飞书提醒
7. 安装依赖
Debian / Ubuntu:
apt update
apt install -y curl jq
8. RDAP 查询测试
示例:
curl -s http://rdap.cctld.kg/domain/example-random.edu.kg
返回:
{
"eventAction": "Record expires",
"eventDate": "2026-09-11T08:18:09Z"
}
表示:
UTC时间:
2026-09-11 08:18:09
亚洲东京时间:
2026-09-11 17:18:09
提醒策略
| 剩余时间 | 是否提醒 |
|---|---|
| >90天 | 不提醒 |
| ≤90天 | 提醒一次 |
| ≤60天 | 提醒一次 |
| ≤30天 | 提醒一次 |
| ≤7天 | 提醒一次 |
| ≤3天 | 提醒一次 |
后续扩展
可以继续增加:
运维巡检系统
├── 域名到期检查
├── SSL证书检查
├── DNS解析检查
├── Docker服务检查
├── 磁盘空间检查
└── 飞书统一告警
适用于:
- 多 VPS 环境
- 小规模 SRE 运维
- 云服务器资产巡检

浙公网安备 33010602011771号