ddnspod php 脚本,一个使用DNSPOD做DDNS的脚本

#!/bin/bash

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

# File Name: dnspodDDNS.sh

# Author: LookBack

# Email: 393411264@qq.com

# Created Time: 2015年03月28日 星期六 23时19分00秒

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

#

#        利用DNSPOD官方提供的API,自动更新域名解析记录,

#        在Netgear 4300 openwrt和CentOS 6系统上测试完美执行,

#        在其他硬件的openwrt上应该也是可以执行的,

#        非openwrt系统的不保证脚本的兼容性。

#        如有任何BUG 请联系我 393411264@qq.com

#

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

#=======================下方是需要修改的参数信息=============================================

#DNSPOD 帐号

DNSPODID="393411264@qq.com"

#DNSPOD 密码

DNSPODPW="www.05hd.com"

#DNSPOD 主域名

DNSPODPD="05h.com"

#DNSPOD 二级域名,可以是多个,如下设置DNSPODSDNM[0-n]。有几个就写几个,把多余的删除

DNSPODSDNM[0]="openwrt141"

DNSPODSDNM[1]="openwrt"

DNSPODSDNM[2]="netgear111"

#=========================下方内容如果不懂请勿修改============================================

CURL=$(which curl)

GetID() {

$CURL -X POST https://dnsapi.cn/Domain.List -ks -d "login_email=$1&login_password=$2&format=json" | \

awk -F',' '{for(i=1;i<=NF;i++) if($i~/"id":[0-9]+/ || $i~/"name":".*"/) {print $i}}' | \

awk '{if (NR%2==0){print $0} else {printf"%s ",$0}}' | sed 's/"domains":\[//' | \

awk -F':| |"' '{print $9,$4}' > /tmp/dnspodDomain

while read line; do

if [ "$(awk '{print$1}' <<< $line)A" = "${DNSPODPD}A" ]; then

DNSPODPDID=$(awk '{print$2}' <<< $line)

break

fi

done < /tmp/dnspodDomain

$CURL -X POST https://dnsapi.cn/Record.List -ks -d "login_email=$1&login_password=$2&format=json&domain_id=$DNSPODPDID" | \

sed 's/.*},"records":\[//' | awk -F',' '{for(i=1;i<=NF;i++) if($i~/"id":"[0-9]+"/ || $i~/"name":".*"/) {print $i}}' | \

awk '{if (NR%2==0){print $0} else {printf"%s ",$0}}' | awk -F'"' '{print $8,$4}' > /tmp/dnspodRecord

while read line; do

for i in `seq 1 ${#DNSPODSDNM[@]}`; do

i=$[$i-1]

[ "$(awk '{print$1}' <<< $line)A" = "${DNSPODSDNM[$i]}A" ] && DNSPODSDID[$i]=$(awk '{print$2}' <<< $line) && break

done

done < /tmp/dnspodRecord

}

StartRun() {

WanIP=$($CURL -s ip.cn | grep -Eo '([0-9]{1,3}[\.]){3}[0-9]{1,3}')

DNSPODIP=$($CURL -X POST https://dnsapi.cn/Record.Info -ks -d \

"login_email=$1&login_password=$2&format=json&domain_id=$3&record_id=${DNSPODSDID[0]}" | \

grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')

#awk -F':|,|"' '{for(i=1;i<=NF;i++)if($i~/^([0-9]{1,3}\.){3}[0-9]{1,3}$/){print$i;break}}')

[ -z $WanIP ] && exit 1

[ -z $DNSPODIP ] && exit 1

:> /tmp/dnspodDomain && :>/tmp/dnspodRecord

}

UploadIP() {

[ "${3}A" != "${4}A" ]

if [ "A$?" = "A0" ]; then

for i in `seq 1 ${#DNSPODSDNM[@]}`; do

i=$[$i-1]

$CURL -X POST https://dnsapi.cn/Record.Modify -ks -d \

"login_email=$1&login_password=$2&format=json&domain_id=$5\

&record_id= ${DNSPODSDID[$i]}&sub_domain=${DNSPODSDNM[$i]}&value=$3\

&record_type=A&record_line=默认" &>/dev/null

echo "$(date "+%F %H:%M:%S") Domain ${DNSPODSDNM[$i]}.$DNSPODPD A Record Update To $3" >> /var/log/dnspod.log

done

fi

}

RUN() {

GetID $1 $2

StartRun $1 $2 $DNSPODPDID

UploadIP $1 $2 ${WanIP} ${DNSPODIP} $DNSPODPDID ${DNSPODSDID[*]}

}

RUN $DNSPODID $DNSPODPW $DNSPODPDID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的dnspod的python脚本,可以用来自动更新DNS记录: ```python import requests import json # 在dnspod网站上获取API Token,并填入下面的信息 login_token = "YOUR_LOGIN_TOKEN" domain = "YOUR_DOMAIN" sub_domain = "YOUR_SUB_DOMAIN" # 获取指定域名的记录 def get_records(): url = "https://dnsapi.cn/Record.List" data = { "login_token": login_token, "format": "json", "domain": domain, "sub_domain": sub_domain, "record_type": "A" } response = requests.post(url, data=data) result = json.loads(response.text) return result["records"] # 更新指定域名的记录 def update_record(record_id, ip): url = "https://dnsapi.cn/Record.Modify" data = { "login_token": login_token, "format": "json", "domain": domain, "record_id": record_id, "sub_domain": sub_domain, "record_type": "A", "record_line": "默认", "value": ip } response = requests.post(url, data=data) result = json.loads(response.text) return result["status"]["code"] == "1" # 获取本机IP地址 def get_ip(): response = requests.get("https://api.ipify.org") return response.text.strip() # 主程序 if __name__ == "__main__": records = get_records() if len(records) == 0: print("未找到指定的DNS记录") else: record_id = records[0]["id"] old_ip = records[0]["value"] new_ip = get_ip() if old_ip != new_ip: if update_record(record_id, new_ip): print("DNS记录已更新为:" + new_ip) else: print("DNS记录更新失败") else: print("DNS记录无需更新") ``` 需要注意的是,这个脚本需要使用dnspod的API,因此需要在dnspod网站上获取API Token,并填入脚本中相应的信息。另外,这个脚本使用了requests和json两个库,请确保已经安装了这两个库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值