dnspod动态域名解析自动更新脚本(Linux)

3322.org最近经常不稳定,估计要逼免费用户花钱了,花生壳更没必要用了,于是想到dnspod,网上有现成的内容,调用即可:

参考网址:http://www.anrip.com/post/872

1、脚本内容如下:(只需修改用户名密码,和所需更新的域名和子域名,红色字体标注)

——————————————————————————————————————–

#!/bin/sh

#################################################
# AnripDdns v3.08.09
# 基于DNSPod用户API实现的动态域名客户端
# 作者: 若海[mail@anrip.com]
# 介绍: http://www.anrip.com/ddnspod
# 时间: 2013-08-08 23:25:00
#################################################

# 全局变量表
arPass=arMail=””

# 获得外网地址
arIpAdress() {
local inter=”http://members.3322.org/dyndns/getip”
wget –quiet –no-check-certificate –output-document=- $inter
}

# 查询域名地址
# 参数: 待查询域名
arNslookup() {
local dnsvr=”114.114.114.114″
nslookup ${1} $dnsvr | tr -d ‘\n[:blank:]’ | sed ‘s/.\+1 \([0-9\.]\+\)/\1/’
}

# 读取接口数据
# 参数: 接口类型 待提交数据
arApiPost() {
local agent=”dearda@dearda.com”
local inter=”https://dnsapi.cn/${1:?’Info.Version’}”
local param=”login_email=${arMail}&login_password=${arPass}&format=json&${2}”
wget –quiet –no-check-certificate –output-document=- –user-agent=$agent –post-data $param $inter
}

# 更新记录信息
# 参数: 主域名 子域名
arDdnsUpdate() {
local domainID recordID recordRS recordCD
# 获得域名ID
domainID=$(arApiPost “Domain.Info” “domain=${1}”)
domainID=$(echo $domainID | sed ‘s/.\+{“id”:”\([0-9]\+\)”.\+/\1/’)
# 获得记录ID
recordID=$(arApiPost “Record.List” “domain_id=${domainID}&sub_domain=${2}”)
recordID=$(echo $recordID | sed ‘s/.\+\[{“id”:”\([0-9]\+\)”.\+/\1/’)
# 更新记录IP
recordRS=$(arApiPost “Record.Ddns” “domain_id=${domainID}&record_id=${recordID}&sub_domain=${2}&record_line=默认”)
recordCD=$(echo $recordRS | sed ‘s/.\+{“code”:”\([0-9]\+\)”.\+/\1/’)
# 输出记录IP
if [ “$recordCD” == “1” ]; then
echo $recordRS | sed ‘s/.\+,”value”:”\([0-9\.]\+\)”.\+/\1/’
return 1
fi
# 输出错误信息
echo $recordRS | sed ‘s/.\+,”message”:”\([^”]\+\)”.\+/\1/’
}

# 动态检查更新
# 参数: 主域名 子域名
arDdnsCheck() {
local postRS
local hostIP=$(arIpAdress)
local lastIP=$(arNslookup “${2}.${1}”)
echo “hostIP: ${hostIP}”
echo “lastIP: ${lastIP}”
if [ “$lastIP” != “$hostIP” ]; then
postRS=$(arDdnsUpdate $1 $2)
echo “postRS: ${postRS}”
if [ $? -ne 1 ]; then
return 0
fi
fi
return 1
}

###################################################

# 设置用户参数
arMail=”dearda@dearda.com”
arPass=”MyPassword@123″

# 检查更新域名
arDdnsCheck “dearda.com” “www”
arDdnsCheck “dearda.com” “bbs”

 

——————————————————————————————————————–

2、新建crontab任务,执行间隔时间看情况选择

3、还有几个dnspod的命令,可查询域名和子域名等信息:

查看域名信息
curl -X POST https://dnsapi.cn/Domain.List -d ‘login_email=abc@163.com&login_password=abc123&format=json’

查看域名下的记录信息
curl -X POST https://dnsapi.cn/Record.List -d ‘login_email=abc@163.com&login_password=abc123&format=json&domain_id=88888888’

通过domain_id和record_id修改记录
curl -X POST https://dnsapi.cn/Record.Modify -d ‘login_email=abc@163.com&login_password=abc123&format=json&domain_id=888888888&record_id=99999999&sub_domain=oracle&value=111.111.111.111&record_type=A&record_line=默认’