使用python脚本更新阿里DNS记录
...大约 1 分钟
在阿里申请域名,实名制后,可以通过官方的sdk 进行动态更新域名记录
前提:
- 有域名,且在阿里管理
 - 已经配置好一条记录
 - 准备好自己的AK 信息
 - 安装需要的包,pip install aliyun-python-sdk-core aliyun-python-sdk-alidns
 - 在当前目录准备好 ip.txt 文件存放当前ip
官方说明 
脚本使用的是Python3 写的
#!/usr/bin/python3
#coding=utf-8
def get_ip():
    import requests
    import re
    import time 
    #生成当前时间
    now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    #获取公网IP
    text=requests.get("http://myip.ipip.net").text
    ip = re.findall(r'\d+.\d+.\d+.\d+',text)
    #读取旧IP
    with open("ip.txt",'r') as f:
        oldip = f.readline().split('\n')[0]
        f.close()
    #判断
    if ip[0] != oldip:
        #更新DNS记录
        updatedns(ip[0])
        #写入新IP到文件
        with open("ip.txt",'w') as f:
            f.write(ip[0])
            f.close()
        #更新记录
        with open("updatedns.log",'a+') as log:
            mess = now  + "\t旧IP:" + oldip + "\t新IP:" + ip[0]+ "\n"
            log.write(mess)
            log.close()
    else:
        with open("updatedns.log",'a+') as log:
            mess = now  + "\t当前IP没有发生变化\n"
            log.write(mess)
            log.close()
    #print (len(ip[0]))
    #print ("1:%s" % ip[0])
    #print (len(oldip))
    #print (oldip)
def updatedns(IP):
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest
    client = AcsClient('youraccessid', 'youraccesskey', 'cn-hangzhou')
    request = UpdateDomainRecordRequest()
    request.set_accept_format('json')
    request.set_RecordId("21474773075837xxx")
    request.set_RR("home")
    request.set_Type("A")
    request.set_Value(IP)
    response = client.do_action_with_exception(request)
    # python2:  print(response) 
    print(str(response, encoding='utf-8'))
if __name__ == '__main__':
    get_ip()
    print("It's ok")
 Powered by  Waline  v3.1.3