下面操作是在Ubuntu下進行
第一步先安裝jq
sudo apt install jq
第二步去獲取API Token
https://www.dnspod.cn/console/user/security
創建后就獲得API的ID和Token,因為只顯示一次,所以Token的值自己記着
第三步獲取域名的ID
假設API的ID是123456,Token是aabbcc112233,login_token就是123456,aabbcc112233,然后執行以下命令獲取域名ID
curl 'https://dnsapi.cn/Domain.List' -d 'login_token=123456,aabbcc112233&format=json'
第四步獲取子域名ID
假設第三步獲取的域名ID是778899,然后執行以下命令獲取子域名ID
curl 'https://dnsapi.cn/Record.List' -d 'login_token=123456,aabbcc112233&format=json&domain_id=778899'
假設第四步獲取到的子域名ID為
a記錄的ID是12
b記錄的ID是34
c記錄的ID是56
然后要對這三個子域名解析記錄更新IP
腳本如下
#!/bin/bash time=$(date "+%Y-%m-%d %H:%M:%S") oldIPFile=./oldip.txt logFile=./updatelog.txt LOGIN_TOKEN=123456,aabbcc112233 RECORD_ID=12,34,56 function updateIp() { result=$(curl -X POST https://dnsapi.cn/Batch.Record.Modify -d "login_token=${LOGIN_TOKEN}&format=json&record_id=${RECORD_ID}&change=record_type&change_to=A&value=${myip}" | jq .status.code) code="\"1\"" if [ "$result" = "$code" ]; then echo "${time} 更新成功 ${myip}" >> $logFile echo "$myip" > $oldIPFile else echo "更新失敗,代碼: $result" >> $logFile exit 0 fi } myip=$(curl http://pv.sohu.com/cityjson 2>> /dev/null | awk -F '"' '{print $4}') echo "當前ip:$myip" if [ ! -f "$oldIPFile" ]; then updateIp else oldip=$(cat $oldIPFile) if [ "$myip" = "$oldip" ]; then exit 0 else updateIp fi fi
假設要每分鍾執行一次的話
編輯定時任務
crontab -e
然后在最后一行增加(假設我腳本放在/home目錄下,名字叫dns.sh),編輯后保存
* * * * * cd /home && bash dns.sh
最后,記得給腳本x權限