使用python脚本更新阿里DNS记录
2023年5月21日...大约 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")
贡献者
change