前言
最近從 GoDaddy 轉換到 Namecheap,發現 Namecheap 有自動更新 A Record
的服務,
將別人提供的腳本簡單修改一下,提供給各位使用
事前準備
- 首先先到 Namecheap 的 Advanced DNS 開啟
DDNS
服務以及抄下 Dynamic DNS Password
- 再來是新增一個
A + Dynamic DNS Record
IP address 可以先隨意填,之後 DDNS 就會更新成正確的
腳本內容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| # Namecheap 的更新伺服器 :global ddnsserv "dynamicdns.park-your-domain.com" # A Record 的 Host :global ddnshostname "www" # 你的域名 :global ddnsdomain "example.com" # DDNS Password :global ddnspass "e07910a2eb9943bad94014ad5ba54e83" # 對外的 PPPoE 介面 :global ddnsint "Hinet-PPPoE-out" :global ddnsip :global ddnslastip
:global ddnsip [ /ip address get [/ip address find interface=$ddnsint ] address ]
# Strip the net mask off the IP address :for i from=( [:len $ddnsip] - 1) to=0 do={ :if ( [:pick $ddnsip $i] = "/") do={ :set ddnsip [:pick $ddnsip 0 $i] } }
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" } :if ([ :typeof $ddnsip ] = nil ) do={ :log info ("DDNS: No ip address present on pppoe interface, dammit TM.") } else={ :if ($ddnsip != $ddnslastip) do={ :log info ("DDNS: Updating $ddnsip $ddnslastip") :local str "/update?host=$ddnshostname&domain=$ddnsdomain&password=$ddnspass&ip=$ddnsip" /tool fetch address=$ddnsserv src-path=$str mode=http dst-path=("/disk1/NamecheapDDNS.".$ddnshostname) :global ddnslastip "$ddnsip" } else={ # 我把下面這行給註解掉了,每分鐘更新一次會一直跑 log 出來,你要抓問題再把註解去掉 # :log info "DDNS: No update required." } }
|
參考資料