ddns.sh 动态DNS脚本
动态DNS:
目的:通过固定域名 访问 路由/家庭内网提供的服务
条件:
家庭具有动态公网IP内网设备
软理由或路由器可以执行脚本
软路由设置动态DNS时,有的么有提供cloudflare,可以使用以下脚本,动态更新域名指向家庭公网IP。
#! /bin/bash
# ddns.cloudflare.v4.sh
# API doc: https://api.cloudflare.com/#dns-records-for-a-zone-update-dns-record
# cloudflare config.
email=???@gmail.com #替换邮箱
key=??? #https://dash.cloudflare.com/profile/api-tokens
subdomain=ddns.yourdomain.com #替换你的域名
# get from https://dash.cloudflare.com request when change dns.
zone_id=85c1ef2a12d0375df4942ed4a0?????? #替换
identifier=eaa608d50943c72126dbb922?????? #替换
# Get Ip By Curl
getip="https://api.ipify.org/"
ip=$(curl "$getip")
#ip=$(ifconfig pppoe-vwan1 | grep 'inet addr:' | awk -F: '{print $2}' | awk '{print$1}')
# https://jaminzhang.github.io/shell/the-problem-of-curl-commit-json-data-include-shell-variables/
curl -X PUT "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${identifier}" \
-H "X-Auth-Email: ${email}" \
-H "X-Auth-Key: ${key}" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"'"${subdomain}"'","content":"'"${ip}"'","ttl":120,"proxied":false}'
把上面的内容复制到一个文件中,并给予执行权限,设置crontab为开启/重启执行即可。
vi ddns.sh
chmod +x ddns.sh
crontab -e
# @reboot /path/to/ddns.sh