dnspod api自動更新解析記錄腳本


下面操作是在Ubuntu下進行

dnspod api官方文檔

 

第一步先安裝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權限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM