一、问题由来

昨天家里停电了,来电后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(动态域名解析)获取解析并对比相关推荐

  1. Python实现阿里云DDNS动态域名解析

    想要更好的阅读体验,可以转我的个人博客. DDNS 简介 DDNS(Dynamic Domain Name Server),它的作用是将用户的动态IP绑定到一个域名上去. 这样就算你的服务器IP发生了 ...

  2. 阿里云DDNS动态绑定域名与IP实现远程调试远程办公

    之前申请了公网IP,这样调试接口的时候可以直接远程调试,但因为申请的公网IP会随时变化,所以使用阿里云DDNS服务,随时绑定公网IP,直接域名访问服务. 1.创建阿里云账号和访问密钥(AccessKe ...

  3. vue 获取动态域名_通过阿里云实现动态域名解析DDNS

    前言 该脚本的代码大部分是参考自阿里云的官方帮助文档. 1, 脚本语言使用的是python, 我个人只是了解python,没有太深入的知识功底 2, 脚本代码我会尽量详细地添加注释说明,有问题欢迎留言 ...

  4. python3实现阿里云DDNS域名动态解析

    一. 前言 家里部署了一台NAS服务器,在公司平时都是通过IP访问的,现在想更改为用域名去访问,但是家里的宽带都是动态的公网IP,每次IP变了都需要手动解析一次域名,这样就比较麻烦,那怎么办了?这个时 ...

  5. 群晖NAS教程(二十一)、利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云)

    群晖NAS教程(二十一).利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云.腾讯云dnspod.Cloudflare.华为云) 为了更好的浏览体验,欢迎光顾勤奋的凯尔森 ...

  6. Python+阿里云DNS 搭建DDNS动态域名解析

    家用的动态公网IP在断电以及一段时间后会变化,现在家宽公网IP开网盘以及代理管得越来越严格,已经有检测到被封的案例 上海检测web封停 这让我这种挂种子的PT党(迫真)感到害怕 以前我把国外的免费域名 ...

  7. 动态更新阿里云DDNS解析记录的IPv6地址,随时随地用域名远程访问自己的电脑【如何远程访问家里的电脑】

    远程访问电脑 日志 简介 要求 1. 获取两台电脑 2.IPv6网络 2.1检查光猫 2.2检查路由器 2.3配置电脑防火墙 2.3.1添加ICMPv6协议 2.3.2配置SMB协议 2.4配置远程桌 ...

  8. 阿里云 SDK 动态IP域名解析

    阿里云提供 aliyun sdk,可以通过申请获得的 <accessKeyId> 和 <accessSecret> 在 sdk 环境下,直接控制相应账号下阿里云的所有产品,例如 ...

  9. .net core 阿里云ddns解析

    前几天,oray免费的ddns域名解析挂了. 平时也不稳定,收费的太贵.决定弃用,并把之前的oray申请的顶级域名转到阿里云. 转出这里不详细说了,百度一搜一大把. 完成转出后,家里路由器并没有阿里云 ...

最新文章

  1. RH系列linux上编译android2.3(gingerbread)
  2. 用html写消费记录页面,支付流水记录.html
  3. MoeCTF 2021Re部分------time2go
  4. preg_grep用法
  5. 微软第二财季营收达 517 亿美元,净利润同比增长 21%
  6. Stanford_NLP_TOOLS:CRFClassifier
  7. 流程企业(钢铁企业)的制造执行系统
  8. JavaScript学习总结(二十)——Javascript非构造函数的继承
  9. MSP430学习小结2-程序主体结构安排及低功耗-转载
  10. [Spark]-编译(2.3.1)部署(YARN-Cluster)
  11. 【浅谈】我对中小型企业网络管理的一些看法(二)
  12. 用计算机画图截图图片,如何快速截图保存图片
  13. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias ' star.facade.vipuser.vo.
  14. 如果你觉得自己对 CSS 变量不熟悉,那么可以补充这个!
  15. 聊天系统服务器端类图,使用Java多线程来实现多人聊天室 附实例代码
  16. 修改Windows的Internet时间服务器使时间同步
  17. 用户调查显示,Rust语言很难学习和使用
  18. 台式计算机中远程登录在哪里,电脑如何进行远程连接
  19. Duplicate Net Names Wire AVCC
  20. Python练手项目:玩转魔方

热门文章

  1. 使用神经网络的自动化特征工程
  2. MATLAB输入/输出语句
  3. 奇偶校验码 ,奇偶校验码检错原理,奇偶校验码的缺点。
  4. 运动蓝牙耳机怎么选、性价比高的蓝牙运动耳机
  5. 不同施肥类型导致产量不同--SPSS 单因素方差分析
  6. 线性回归模型的评估方法
  7. 百度 语音合成 语音识别 获取 Access Token
  8. PAT1002 写出这个数 分数 20
  9. 广东移动通信有限责任公司
  10. 一物一码(10):二维码的安全管控