阿里云DDNS(动态域名解析)获取解析并对比
一、问题由来
昨天家里停电了,来电后IP地址改变了。但是并没有更新到域名解析数据上。所以感觉之前写的代码有一丝丝的不稳定。
今天重新写一个直接点的。直接查询域名服务器的解析地址,与本地公网IP地址比对,不同后执行修改解析Api自动修改解析地址。
本机环境
Ubuntu 20.04
注意:看本文之前请查看我前两篇文章,本文基于上述两篇文章编写。
获取IP发邮件
个人服务器实现阿里云DDNS(动态域名解析)
二、具体实施
1.阿里云获取解析地址api
根据传入参数获取指定主域名的所有解析记录列表
只需要填写域名即可
在你的服务器上安装此sdk
2.修改代码
首先修改代码删除其他我们不需要的数据,只留下解析IP。
import json
my_ip=str(response, encoding='utf-8')
c = json.loads(my_ip)
onlineIP=c['DomainRecords']['Record'][0]['Value']
print(onlineIP)
我们将前面文章内的存储文件通过python的方法读取出来,做对比。
file = open('check_ip.text')
#打开存储IP的文件
localIP = file.readline().strip('\n')
file.close()
print(localIP)
if onlineIP != localIP:# 对比是否有区别
如果两个文件内的IP地址不一样,则掉用调用阿里云修改解析地址的API进行修改。
整体代码下载
#!/usr/bin/env python3
#coding=utf-8import json
from urllib.request import urlopen
from json import loadfrom aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkcore.auth.credentials import AccessKeyCredential
from aliyunsdkcore.auth.credentials import StsTokenCredential
from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest
from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequestcredentials = AccessKeyCredential('your-access-key-id', 'your-access-key-secret')
# use STS Token
# credentials = StsTokenCredential('<your-access-key-id>', '<your-access-key-secret>', '<your-sts-token>')
client = AcsClient(region_id='cn-qingdao', credential=credentials)request = DescribeDomainRecordsRequest()
request.set_accept_format('json')request.set_DomainName("你的域名")response = client.do_action_with_exception(request)# python2: print(response)
my_ip=str(response, encoding='utf-8')
c = json.loads(my_ip)
onlineIP=c['DomainRecords']['Record'][0]['Value']
print(onlineIP)
file = open('check_ip.text')
#打开存储IP的文件
localIP = file.readline().strip('\n')
file.close()
print(localIP)
if onlineIP != localIP:# 对比是否有区别print("Mismatch")my_ip = load(urlopen('https://api.ipify.org/?format=json'))['ip']credentials = AccessKeyCredential('your-access-key-id', 'your-access-key-secret')# use STS Token# credentials = StsTokenCredential('<your-access-key-id>', '<your-access-key-secret>', '<your-sts-token>')client = AcsClient(region_id='cn-hangzhou', credential=credentials)request = UpdateDomainRecordRequest()request.set_accept_format('json')request.set_RecordId("8888888888")request.set_RR("@")request.set_Type("A")request.set_Value(my_ip)response = client.do_action_with_exception(request)# python2: print(response)print(str(response, encoding='utf-8'))
else:print("Match with online")
‘your-access-key-id’, 'your-access-key-secret’记得替换成自己的。
保存在/usr/local/bin/test.py下,写进checkIP.sh文件。
将python3 test.py 写在If上面即可。
阿里云DDNS(动态域名解析)获取解析并对比相关推荐
- Python实现阿里云DDNS动态域名解析
想要更好的阅读体验,可以转我的个人博客. DDNS 简介 DDNS(Dynamic Domain Name Server),它的作用是将用户的动态IP绑定到一个域名上去. 这样就算你的服务器IP发生了 ...
- 阿里云DDNS动态绑定域名与IP实现远程调试远程办公
之前申请了公网IP,这样调试接口的时候可以直接远程调试,但因为申请的公网IP会随时变化,所以使用阿里云DDNS服务,随时绑定公网IP,直接域名访问服务. 1.创建阿里云账号和访问密钥(AccessKe ...
- vue 获取动态域名_通过阿里云实现动态域名解析DDNS
前言 该脚本的代码大部分是参考自阿里云的官方帮助文档. 1, 脚本语言使用的是python, 我个人只是了解python,没有太深入的知识功底 2, 脚本代码我会尽量详细地添加注释说明,有问题欢迎留言 ...
- python3实现阿里云DDNS域名动态解析
一. 前言 家里部署了一台NAS服务器,在公司平时都是通过IP访问的,现在想更改为用域名去访问,但是家里的宽带都是动态的公网IP,每次IP变了都需要手动解析一次域名,这样就比较麻烦,那怎么办了?这个时 ...
- 群晖NAS教程(二十一)、利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云)
群晖NAS教程(二十一).利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云.腾讯云dnspod.Cloudflare.华为云) 为了更好的浏览体验,欢迎光顾勤奋的凯尔森 ...
- Python+阿里云DNS 搭建DDNS动态域名解析
家用的动态公网IP在断电以及一段时间后会变化,现在家宽公网IP开网盘以及代理管得越来越严格,已经有检测到被封的案例 上海检测web封停 这让我这种挂种子的PT党(迫真)感到害怕 以前我把国外的免费域名 ...
- 动态更新阿里云DDNS解析记录的IPv6地址,随时随地用域名远程访问自己的电脑【如何远程访问家里的电脑】
远程访问电脑 日志 简介 要求 1. 获取两台电脑 2.IPv6网络 2.1检查光猫 2.2检查路由器 2.3配置电脑防火墙 2.3.1添加ICMPv6协议 2.3.2配置SMB协议 2.4配置远程桌 ...
- 阿里云 SDK 动态IP域名解析
阿里云提供 aliyun sdk,可以通过申请获得的 <accessKeyId> 和 <accessSecret> 在 sdk 环境下,直接控制相应账号下阿里云的所有产品,例如 ...
- .net core 阿里云ddns解析
前几天,oray免费的ddns域名解析挂了. 平时也不稳定,收费的太贵.决定弃用,并把之前的oray申请的顶级域名转到阿里云. 转出这里不详细说了,百度一搜一大把. 完成转出后,家里路由器并没有阿里云 ...
最新文章
- RH系列linux上编译android2.3(gingerbread)
- 用html写消费记录页面,支付流水记录.html
- MoeCTF 2021Re部分------time2go
- preg_grep用法
- 微软第二财季营收达 517 亿美元,净利润同比增长 21%
- Stanford_NLP_TOOLS:CRFClassifier
- 流程企业(钢铁企业)的制造执行系统
- JavaScript学习总结(二十)——Javascript非构造函数的继承
- MSP430学习小结2-程序主体结构安排及低功耗-转载
- [Spark]-编译(2.3.1)部署(YARN-Cluster)
- 【浅谈】我对中小型企业网络管理的一些看法(二)
- 用计算机画图截图图片,如何快速截图保存图片
- Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias ' star.facade.vipuser.vo.
- 如果你觉得自己对 CSS 变量不熟悉,那么可以补充这个!
- 聊天系统服务器端类图,使用Java多线程来实现多人聊天室 附实例代码
- 修改Windows的Internet时间服务器使时间同步
- 用户调查显示,Rust语言很难学习和使用
- 台式计算机中远程登录在哪里,电脑如何进行远程连接
- Duplicate Net Names Wire AVCC
- Python练手项目:玩转魔方