更新dnspod记录的简单shell脚本

         dnspod的API很好很多很强大,相应的就是API比较复杂。。官网上提供(包括第三方)的动态更新记录的软件或脚本又太复杂不适合我这种只需简单使用dnspod的用户 ,于是自己动手,没想到花了一下午加一晚上才写成了一个简单的脚本。。我弱爆了。。

        脚本放在github上了: https://github.com/chliny/dnspod_sh     

#########################################################################
# File Name: dnspod.sh
# Author: chliny
# mail: chliny11@gmail.com
# Created Time: 2012年11月22日 星期四 10时35分59秒
#########################################################################
#!/bin/bash
email="登录邮箱"
password="登录密码"
format="json"
lang="en"
apiurl="https://dnsapi.cn/"
commonPost="login_email=$email&login_password=$password&format=$format&lang=$lang"
# 域名列表,格式"子域名/主机记录 主域名"
domainGroup[0]="subdomain1 masterdomain1.com"
domainGroup[1]="subdomain2 masterdomain2.com"

# 获取本地ip
getNewIp()
{
    ifconfig eth0 | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}'
}

# 通过key得到找到JSONdomain字段中key对应的值
# $1 JSON
# $2 key
getDomainDataByKey()
{
    if [ "$2" == "id" ];then
echo $1 | grep -E -o "\"domain[^}]*}" | grep -E -o "\"$2[^\,]*\," | grep -E -o ":[^\,]*" | cut -c 2-
    else
echo $1 | grep -E -o "\"domain[^}]*}" | grep -E -o "\"$2[^\,]*\," | grep -E -o ":\"[^\"]*" | cut -c 3-
    fi
}

# 通过key得到找到JSONrecord字段中key对应的值
# record字段在getRecordList()中有做过处理
# $1 JSON
# $2 key
getRecordDataByKey()
{
    echo $1 | grep -E -o "\"$2[^\,]*\," | grep -E -o ":\"[^\"]*" | cut -c 3-
}

# 根据域名id获取记录列表并做一定处理
# $1 域名id
# $2 子域名/主机记录
getRecordList()
{
    allRecord=`curl -d $commonPost"&domain_id=$1&offset=0&length=20&sub_domain=$2" $apiurl"Record.List"`
    echo $allRecord | grep -E -o "records.*" | grep -E -o "\{[^{}]*\}" | grep -E -v "dnspod\.net"
}

# 获取域名列表
getDomainList()
{
curl -d $commonPost"&type=mine&offset=0&length=10" $apiurl"Domain.List"
}

# 修改记录
changeIp()
{
    arrnum=${#domainGroup[@]}
    for (( i=0;i<arrnum;++i));do
sub_domain=${domainGroup[$i]:0:1}
        master_domain=${domainGroup[$i]:1:1}

        domainListInfo=$(getDomainList)
        domainid=$(getDomainDataByKey "$domainListInfo" 'id')
        recordList=$(getRecordList $domainid "$sub_domain")

        oldip=$(getRecordDataByKey "$recordList" 'value')
        newip=$(getNewIp)
        # 新ip与旧ip不相等则进行修改
        if [ "$newip" != "$oldip" ];then
recordid=$(getRecordDataByKey "$recordList" 'id')
            recordName=$(getRecordDataByKey "$recordList" 'name')
            recordTtl=$(getRecordDataByKey "$recordList" 'ttl')
            recordType=$(getRecordDataByKey "$recordList" 'type')
            recordLine='默认'

            # 判断取值是否正常,如果值为空就不处理
            if [ -n "$recordid" ] && [ -n "$recordTtl" ] && [ -n "$recordType" ]; then
changedRecords="&domain_id=$domainid&record_id=$recordid&sub_domain=$sub_domain&record_type=$recordType&record_line=$recordLine&ttl=$recordTtl&value=$newip"
                curl -d $commonPost$changedRecords $apiurl"Record.Modify"
            fi
fi
done
}

changeIp

转载于:https://my.oschina.net/chliny/blog/91377

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值