天下脸皮共十分
我占八分

阿里云ddns脚本全流程+python、pip环境安装

下载python安装包

地址略

添加环境变量

目前默认安装路径如下

 C:\Users\wuyan\AppData\Local\Programs\Python\Python39

默认3.4版本后会自带pip,无需安装,但需要添加环境变量

 C:\Users\wuyan\AppData\Local\Programs\Python\Python39\Scripts

避免Terminal输入python自动跳转应用商店,需要在如下位置关闭最后两个

ScreenClip

安装必要环境

 pip install aliyun-python-sdk-core-v3
 pip install aliyun-python-sdk-domain
 pip install aliyun-python-sdk-alidns
 pip install requests

注意事项

代理模式下pip安装报错

获取阿里云key和secret

地址

执行python脚本

 from aliyunsdkcore.client import AcsClient
 from aliyunsdkcore.acs_exception.exceptions import ClientException
 from aliyunsdkcore.acs_exception.exceptions import ServerException
 from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest
 from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest
 import requests
 from urllib.request import urlopen
 import json
 ​
 ipv4_flag = 1  # 是否开启ipv4 ddns解析,1为开启,0为关闭
 accessKeyId = "LTAIYZCfMqc"  # 将accessKeyId改成自己的accessKeyId
 accessSecret = "V1aF627Jepfv4vsBH51RNLsWc"  # 将accessSecret改成自己的accessSecret
 domain = "ityoung.tech"  # 你的主域名
 name_ipv4 = "home"  # 要进行ipv4 ddns解析的子域名
 ​
 ​
 client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou')
 ​
 def update(RecordId, RR, Type, Value):  # 修改域名解析记录
     from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest
     request = UpdateDomainRecordRequest()
     request.set_accept_format('json')
     request.set_RecordId(RecordId)
     request.set_RR(RR)
     request.set_Type(Type)
     request.set_Value(Value)
     response = client.do_action_with_exception(request)
 ​
 ​
 def add(DomainName, RR, Type, Value):  # 添加新的域名解析记录
     from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest
     request = AddDomainRecordRequest()
     request.set_accept_format('json')
     request.set_DomainName(DomainName)
     request.set_RR(RR)  # https://blog.zeruns.tech
     request.set_Type(Type)
     request.set_Value(Value)
     response = client.do_action_with_exception(request)
 ​
 ​
 if __name__ == '__main__':
     if ipv4_flag == 1:
         request = DescribeSubDomainRecordsRequest()
         request.set_accept_format('json')
         request.set_DomainName(domain)
         request.set_SubDomain(name_ipv4 + '.' + domain)
         request.set_Type("A")
         response = client.do_action_with_exception(request)  # 获取域名解析记录列表
         domain_list = json.loads(response)  # 将返回的JSON数据转化为Python能识别的
 ​
         ip = urlopen('https://api-ipv4.ip.sb/ip').read()  # 使用IP.SB的接口获取ipv4地址
         ipv4 = str(ip, encoding='utf-8')
         print("获取到IPv4地址:%s" % ipv4)
 ​
         if domain_list['TotalCount'] == 0:
             add(domain, name_ipv4, "A", ipv4)
             print("新建域名解析成功")
         elif domain_list['TotalCount'] == 1:
             if domain_list['DomainRecords']['Record'][0]['Value'].strip() != ipv4.strip():
                 update(domain_list['DomainRecords']['Record'][0]['RecordId'], name_ipv4, "A", ipv4)
                 print("修改域名解析成功")
             else:  # https://blog.zeruns.tech
                 print("IPv4地址没变")
         elif domain_list['TotalCount'] > 1:
             from aliyunsdkalidns.request.v20150109.DeleteSubDomainRecordsRequest import DeleteSubDomainRecordsRequest
 ​
             request = DeleteSubDomainRecordsRequest()
             request.set_accept_format('json')
             request.set_DomainName(domain)  # https://blog.zeruns.tech
             request.set_RR(name_ipv4)
             request.set_Type("A")
             response = client.do_action_with_exception(request)
             add(domain, name_ipv4, "A", ipv4)
             print("修改域名解析成功")

参考文档

源代码

开启开机自启动

命令

shell:Common Startup

将脚本文件放进去

赞(6) 打赏
未经允许不得转载:Stephen Young » 阿里云ddns脚本全流程+python、pip环境安装
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏