dnspod api自动更新解析记录

2022/03 作者:ihunter 0 0


yum install jq -y


-去获取API令牌

https://www.dnspod.cn/console/user/security

-创建后就获得API的ID和Token

name: dnspod

ID: 134

Token:6b5976c68aba5b14a0558b77c17c393

信息中的 ID 和 Token,需要用这两个字段来组合成一个完整的 Token,组合方式为:"ID,Token"(用英文半角逗号分割),比如 ID 为:134,ToKen为:6b5976c68aba5b14a0558b77c17c393。即完整的 Token 为:134,6b5976c68aba5b14a0558b77c17c393 。得到完整的 Token 之后.


---获取域名列表

curl -X POST https://dnsapi.cn/Domain.List -d 'login_token=298,fa576b11a14e7df8257cac2ca983&format=json'

curl -X POST https://dnsapi.cn/Domain.List.Filter -d 'type=mine&login_token=298,fa576b11a14e7df8257cac2ca9830&format=json&status[]=enable&status[]=pause'

-获取对应:domain_id


---用于获取解析记录列表

curl -X POST https://dnsapi.cn/Record.List -d 'login_token=298,fa576b11a14e7df8257cac2ca983&format=json&domain_id=6993775&sub_domain=qbt&record_type=A&offset=0&length=3'

-offset是否必选:Integer记录开始的偏移,第一条记录为 0,依次类推(仅当指定 length 参数时才生效)。

-length是否必选:Integer共要获取的记录数量的最大值,比如最多获取20条,则为20,最大3000。

-获取:record_id:1082964184


---用于修改解析记录

curl -X POST https://dnsapi.cn/Record.Modify -d 'login_token=298,fa576b11a14e7df8257cac2ca983&format=json&domain_id=6993775&record_id=108296418&sub_domain=qbt&value=3.2.2.2&record_type=A&record_line_id=10%3D0'

-record_line_id 是否必选:否String线路的ID,通过API记录线路获得,英文字符串,比如:‘10=1’。record_line 和 record_line_id 二者传其一即可,系统优先取 record_line_id。

-sub_domain: 二级域名


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}"


curl -X POST https://dnsapi.cn/Record.Modify -d 'login_token=${LOGIN_TOKEN}&format=json&domain_id=${DOMAIN_ID}&record_id=${RECORD_ID}&sub_domain=qbt&value=3.2.2.2&record_type=A&record_line_id=10%3D0'


---dns.sh

#!/bin/bash
time=$(date "+%Y-%m-%d %H:%M:%S")
oldIPFile=./oldip.txt
logFile=./updatelog.txt
LOGIN_TOKEN=298,fa576b11a14e7df8257cac2ca983
DOMAIN_ID=699
RECORD_ID=1082964
SUB_DOMAIN=qbt

function updateIp() {
#curl -X POST https://dnsapi.cn/Record.Modify -d "login_token=298,fa576b11a14e7df8257cac2ca983&format=json&domain_id=699377&record_id=10829641&sub_domain=qbt&value=3.2.2.2&record_type=A&record_line_id=10%3D0&value=117.30.75.7" | jq .status.code
  result=$(curl -X POST https://dnsapi.cn/Record.Modify -d 'login_token=${LOGIN_TOKEN}&format=json&domain_id=${DOMAIN_ID}&record_id=${RECORD_ID}&sub_domain=${SUB_DOMAIN}&value=3.2.2.2&record_type=A&record_line_id=10%3D0&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}')
oldip=$(cat "$oldIPFile")
if [ "$myip" = "$oldip" ]; then
    exit 0
else
    updateIp
fi


---定时任务: 每分钟执行一次

* 1 * * * /bin/sh /opt/dns.sh


赞(0) 更多分享

上篇: Python + Tornado 框架
下篇: 软件移交确认单和移交计划书