尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

shell脚本动态域名解析阿里云

shell脚本动态域名解析阿里云
📅 发布时间:2026/6/19 20:39:47

下面是一个利用Shell脚本调用阿里云DNS API实现动态域名解析(DDNS)的示例。该方案适用于家庭宽带等动态公网IP环境,主要依赖阿里云的域名解析API。

🖥️ 阿里云DDNS Shell脚本示例

#!/bin/bash# 阿里云DDNS动态域名解析脚本
# 使用方法:1. 修改下方配置项 2. 设置为定时任务(如每10分钟执行一次)# 配置区域 - 开始
# 阿里云AccessKey (建议使用子账户的RAM权限)
AccessKeyId="你的AccessKeyId"
AccessKeySecret="你的AccessKeySecret"# 域名配置
DomainName="example.com"     # 主域名
SubDomain="www"              # 子域名前缀 (如www对应www.example.com)
TTL="600"                    # TTL缓存时间(秒),免费版最低600# 获取本机公网IP的方式
GetIPCommand="curl -s whatismyip.akamai.com"
# 配置区域 - 结束# 函数:获取当前域名解析IP
get_dns_ip() {local domain=$1nslookup $domain 223.5.5.5 2>/dev/null | grep 'Address:' | tail -n1 | awk '{print $NF}'
}# 函数:URL编码
urlencode() {out=""while read -n1 c; docase $c in[a-zA-Z0-9._-]) out="$out$c" ;;*) out="$out$(printf '%%%02X' "'$c")" ;;esacdoneecho -n $out
}# 函数:发送API请求
send_request() {local args="AccessKeyId=$AccessKeyId&Action=$1&Format=json&$2&Version=2015-01-09"local hash=$(echo -n "GET&%2F&$(echo "$args" | urlencode)" | openssl dgst -sha1 -hmac "$AccessKeySecret&" -binary | openssl base64)curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(echo "$hash" | urlencode)"
}# 函数:获取RecordId
get_record_id() {send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$RANDOM&SignatureVersion=1.0&SubDomain=$FullDomain&Timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ | urlencode)"
}# 函数:更新解析记录
update_dns() {local record_id=$1local new_ip=$2send_request "UpdateDomainRecord" "RR=$SubDomain&RecordId=$record_id&SignatureMethod=HMAC-SHA1&SignatureNonce=$RANDOM&SignatureVersion=1.0&TTL=$TTL&Timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ | urlencode)&Type=A&Value=$new_ip"
}# 主程序
echo "[$(date '+%Y/%m/%d %H:%M:%S')] DDNS检查开始"# 获取当前公网IP
CurrentIP=$($GetIPCommand)
if [ -z "$CurrentIP" ]; thenecho "错误:无法获取公网IP"exit 1
fiFullDomain="$SubDomain.$DomainName"# 获取当前DNS解析IP
DNS_IP=$(get_dns_ip $FullDomain)if [ "$CurrentIP" = "$DNS_IP" ]; thenecho "IP未变化 ($CurrentIP),无需更新"exit 0
fiecho "检测到IP变化: 本地IP=$CurrentIP, DNS记录=$DNS_IP"# 获取RecordId并更新
RecordResponse=$(get_record_id)
RecordId=$(echo "$RecordResponse" | grep -o '"RecordId":"[^"]*' | cut -d'"' -f4)if [ -n "$RecordId" ]; thenUpdateResult=$(update_dns $RecordId $CurrentIP)if echo "$UpdateResult" | grep -q "RecordId"; thenecho "DDNS更新成功: $FullDomain -> $CurrentIP"elseecho "DDNS更新失败: $UpdateResult"fi
elseecho "错误:无法获取RecordId"
fi

🔧 使用前配置

  1. 阿里云AccessKey配置

    • 登录阿里云控制台 → 访问控制RAM → 创建子账户(推荐)或使用主账户
    • 授权策略:AliyunDNSFullAccess
    • 获取AccessKey ID和Secret
  2. 域名准备

    • 在阿里云域名控制台添加A记录
    • 记录类型:A
    • 主机记录:按需填写(如www)
    • 记录值可先随意填写,脚本运行后会自动更新

⚙️ 部署与自动化

  1. 保存脚本

    # 将脚本保存为 aliddns.sh
    chmod +x aliddns.sh
    
  2. 配置定时任务

    # 编辑crontab (每20分钟执行一次)
    crontab -e
    # 添加以下行:
    */20 * * * * /path/to/your/aliyun-ddns.sh >> /path/to/your/ddns.log 2>&1
    

📌 注意事项

  • IP获取服务:示例使用了whatismyip.akamai.com,若需要可替换为其他IP查询服务
  • 脚本兼容性:确保系统已安装curl、openssl等基础工具
  • 安全提醒:妥善保管AccessKey,建议使用RAM子账户并授予最小必要权限
  • 调试技巧:首次运行可手动执行脚本,观察输出信息

💡 扩展功能

如需更完善的功能(如IPv6支持、微信通知等),可参考开源项目如risfeng/aliyun-ddns-shell,它提供了更完整的实现方案。

希望这个脚本能帮助您轻松实现动态域名解析。如果有任何问题,欢迎继续交流!

相关新闻

  • 对称加密和非对称加密原理对比
  • 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.B)- FlexSPI NOR连接方式大全(RT1180)
  • 20250929周一日记

最新新闻

  • 2026昆山屋顶防水市场深度分析与服务商适配推荐:聚焦本地需求的优质选择 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • 2026年卫生间隔断工厂综合盘点:传炼装饰工程成为工装项目首选
  • 如何快速掌握Umi-OCR:面向初学者的免费离线文字识别全攻略
  • VRT:视频复原Transformer——原理深度解析与技术实现
  • 武汉家具安装推荐良匠千艺2026口碑榜 - 我叫一
  • 2026昆山卫生间防水服务商适配指南:昆山鼎壹万机构解析及5家优质服务商推荐 专业瓷砖空鼓维修公司排名推荐(2026年5月瓷砖空鼓维修最新TOP权威排名) - 鼎壹万修缮说

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号