个人服务器实现阿里云DDNS(动态域名解析)
创作时间:
作者:
@小白创作中心
个人服务器实现阿里云DDNS(动态域名解析)
引用
CSDN
1.
https://blog.csdn.net/qq_37383852/article/details/123113866
本文将详细介绍如何在个人服务器上实现阿里云DDNS(动态域名解析)。通过本教程,你可以实现自动检测公网IP变化并更新域名解析记录的功能。
一、问题由来
最开始只是通过邮件发送最新的公网IP地址,再手动通过阿里云修改解析记录,但是这样很麻烦,也不够帅气。因此希望通过我的域名服务商阿里云,自带的api解决。
本机环境
Ubuntu 20.04
二、准备工作
1.注册AccessKey
首先登录个人的阿里云账号,我的是RAM账户。各位的可以使用主账户进行使用AccessKey。
创建你的AccessKey,并记录下来。
2.获取域名的RecordId
这里可以通过这位大佬的方法找到RecordId。
三、阿里云API
可以通过访问修改解析记录点击调试
点击下方按钮减少填写内容
填写刚刚的RecordId
下面的根据自己的需求填写。
可以试着在Value随便填写一个ip地址并发起调用,再去看看域名的解析记录是否发生改变,改变则调用成功。
我在测试的时候用的是原版的SDK所以在这里介绍原版内容。
在服务器上下载SDK
pip install aliyun-python-sdk-alidns==2.6.32
复制到自己的环境中,将最开始的获取到的AccessKey,修改到代码中。
尝试运行一下。
四、结合获取公网地址
获取公网地址python代码
from urllib.request import urlopen
from json import load
ip = load(urlopen('https://api.ipify.org/?format=json'))['ip']
将上述代码复制进复制的代码。
并将代码中的IP地址替换成变量ip。
代码下载动态域名解析.zip
#!/usr/bin/env python
#coding=utf-8
from urllib.request import urlopen
from json import load
from 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.UpdateDomainRecordRequest import UpdateDomainRecordRequest
ip = load(urlopen('https://api.ipify.org/?format=json'))['ip']
credentials = AccessKeyCredential('你的key-id', '你的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("你的域名RecordId")
request.set_RR("@")
request.set_Type("A")
request.set_Value(ip)
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))
可以结合我的另外一篇文章
#!/bin/bash
# MAYBE CHANGE THESE
ip=$(curl http://pv.sohu.com/cityjson 2>> /dev/null | awk -F '"' '{print $4}')
ip_file="/usr/local/bin/check_ip.txt"
log_file="/usr/local/bin/check_log.txt"
if [ -f $ip_file ]; then
old_ip=$(cat $ip_file)
echo $old_ip
if [ $ip != $old_ip ]
then
echo "IP has not changed."
python3 *.py
echo "--------yes--------"
echo "$ip" | s-nail -s "ip" *****@qq.com
echo -e "[$(date)] - $ip" >> $log_file
echo "$ip" > $ip_file
else
echo "exlt"
exit 0
fi
fi
放在同一个目录下
在echo "IP has not changed."下面添加语句
python3 *.py
从而实现自动检测IP变化,更新解析记录,邮件发送服务。
热门推荐
外装电梯安装:评估与降低对周边环境的影响
舒尼替尼长期服用需知:病情与监测是关键
智能温室:实现环境与作物的和谐共生
三氧大自血疗法的好处及危害
科普短视频点亮求知之光
多核处理器核心间延迟解析及优化实践
腰椎骨折治疗方法及恢复期?一文带你了解!
现场急救宝典:胸外按压实战操作与技巧分享
公积金不按照实际工资缴纳去哪投诉
废书废纸回收价格表及市场分析,废纸旧书回收价值探究
新手入门:女子自行车尺寸选购指南
拔火罐的原理:传统疗法背后的科学解释
关爱老人 关注记忆——阿尔茨海默病
eMMC是什么意思?怎么清除eMMC存储器?
708分、708分、674分……他们的学习秘诀,快收藏!
本科招生院校12所!广东春季高考“含金量”再提升
走遍1000个村,他目睹了农村彩礼从6.6万涨到50万
惊心动魄的古巴导弹危机,到底危险到了什么程度?
儿童异物卡喉怎么办?家长必学,关键时刻能救命!
润肠通便,降糖降压,这个冬季水果你可不要错过
销售预算(提升销售业绩的关键:预算制定技巧)
TPU与PU的根本区别:深入解读两者在应用中的影响
二战五大经典冲锋枪盘点
个性化术后随访,改善患者康复的创新方法
推荐一款宝藏蔬菜,口味赛羊肉,美食家都为它打call
同轴喇叭的连接方法是什么?连接过程中要注意什么?
《哈利波特与火焰杯》重映,三强争霸赛背后的阴谋!
在职研究生高效备考攻略:3个月科学时间规划表
为什么不能轻易靠近话少、不合群的人?看完这三点,你就懂了
解密1型糖尿病:控糖与饮食的全攻略