通过AI助手实现一个nas定时任务更新阿里云域名解析

一.通过AI助手实现一个ip-domain.py的脚本

起一个Python脚本,ip-domain.py;注意已安装Python3.+的运行环境;将下面阿里云相关配置添加,注意这里引用了两个包,requests和alibabacloud_alidns20150109;执行前需要安装一下,然后python ip-domain.py就可以尝试一下效果喽。

这里使用的是通义灵码辅助,虽然给出的提示无法直接执行,但是框架算是有了,然后结合阿里云API的Python版进行调整,最终结果如下:

这里分三个步骤:

①获取本地IP

②获取域名对应阿里云解析

③判断当前解析IP与本地域名IP不一致时,进行更新


# python ip-domain.py

import json
# pip install requests
import requests
from datetime import datetime
# pip install alibabacloud_alidns20150109==3.2.0
from alibabacloud_alidns20150109.client import Client as Alidns20150109Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_alidns20150109 import models as alidns_20150109_models
from alibabacloud_tea_util import models as util_models

# 阿里云相关配置
ALIYUN_ACCESS_KEY = "" # 阿里云查看accessKey
ALIYUN_SECRET_KEY = "" # 阿里云查看secretKey
ALIYUN_REGION_ID = ""  # 替换为您的实际地域ID
ALIYUN_DOMAIN_NAME = "" # 待解析的域名
ALIYUN_SUBDOMAIN = ""  # 带解析的子域名
ALIYUN_RECORD_TYPE = ""  # 解析类型为A记录
ALIYUN_RECORD_LINE = ""  # 默认线路或其他指定线路,默认default
ALIYUN_RECORD_ID = "" #解析记录的ID,可以通过域名列表F12查看

def get_local_ip():
    try:
        response = requests.get("https://api.ipify.org")
        return response.text.strip()
    except requests.exceptions.RequestException as e:
        print(f"Error getting local IP: {e}")
        return None

def get_current_dns_record(client, recordId):
    describe_domain_record_info_request = alidns_20150109_models.DescribeDomainRecordInfoRequest(
            record_id=recordId
        )
    runtime = util_models.RuntimeOptions()
    try:
        # 复制代码运行请自行打印 API 的返回值
        response = client.describe_domain_record_info_with_options(describe_domain_record_info_request, runtime)
        print(f"GET DNS body: {response.body}")
        record_ip = response.body.value
        return record_ip
    except Exception as error:
        # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
        # 错误 message
        print(f"GET DNS error: {error}")
        return None

def update_dns_record(client, recordId, ipAddress, subDomain, recordType):
    request = alidns_20150109_models.UpdateDomainRecordRequest(
            record_id=recordId,
            value=ipAddress,
            rr=subDomain,
            type=recordType
        )
    runtime = util_models.RuntimeOptions()
    try:
        # 复制代码运行请自行打印 API 的返回值
        response = client.update_domain_record_with_options(request, runtime)
        print(f"UPDATE DNS response: {response}")
        return response
    except Exception as error:
        # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
        # 错误 message
        print(f"UPDATE DNS error: {error}")
        return None

def main():
    current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    # 初始化AcsClient实例
    config = open_api_models.Config( access_key_id=ALIYUN_ACCESS_KEY, access_key_secret=ALIYUN_SECRET_KEY )
    # Endpoint 请参考 https://api.aliyun.com/product/Alidns
    config.endpoint = f'alidns.cn-hangzhou.aliyuncs.com'
    client = Alidns20150109Client(config)

    local_ip = get_local_ip()
    print(f"{current_time} Local IP: {local_ip}")

    dns_record_ip = get_current_dns_record(client, ALIYUN_RECORD_ID)
    print(f"{current_time} DNS Record IP: {dns_record_ip}")

    if local_ip is not None and local_ip != dns_record_ip:
        update_dns_record(client, ALIYUN_RECORD_ID, local_ip, ALIYUN_SUBDOMAIN, ALIYUN_RECORD_TYPE)
        print(f"{current_time} DNS record updated successfully.")
    else:
        print(f"{current_time} IP addresses match. No update required.")


if __name__ == "__main__":
    main()

 注意关于ALIYUN_RECORD_ID获取

二.找一个任务管理器进行调用,这里使用了nas上任务计划

控制面板,添加任务计划

用户这里选中root,否则需要授权,指定任务名称

制定一个每二十分钟执行一次的定时任务

将准备好的脚步执行语句填写上:

python “/volume1/docker/localip/ip-domain.py” >> “/volume1/docker/localip/log.txt” 2>&1

点击确定,就可以等待执行喽;查看一下执行日志,然后更新啦;

如果此时你家支持外网IP访问的话,就可以使用域名访问自己nas了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/585320.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何设计一套轻量级的批处理技术?

对于任何应用程序而言,可以说批处理都是一种基础设施类的技术组件。批处理技术应用非常广泛,数据报表、统计分析、定时任务等场景实际上都可以应用批处理技术。如何在不需要人工参与的情况下进行离线、自动、高效地进行复杂数据分析是批处理程序需要考虑…

如何消除SmartScreen“未知发布者”警告?

在互联网高速发展、应用程序遍地开花的当今时代,作为企业,我们通常会开发自己的应用程序来开展自己的业务,以便与客户建立更深入的联系。不少应用程序所有者可能会面临一个难题,那就是用户下载时,系统会弹出SmartScree…

可以在手机端运行的大模型标杆:微软发布第三代Phi-3系列模型,评测结果超过同等参数规模水平,包含三个版本,最小38亿,最高140亿参数

本文原文来自DataLearnerAI官方网站: 可以在手机端运行的大模型标杆:微软发布第三代Phi-3系列模型,评测结果超过同等参数规模水平,包含三个版本,最小38亿,最高140亿参数 | 数据学习者官方网站(Datalearner…

Docker-harbor——私有仓库部署与管理

目录 一、搭建本地私有仓库 1.下载Registry镜像 2.添加本地私有仓库配置 3.重启服务并运行Registry容器 4.容器的操作 4.1拉取Nginx镜像并为镜像打标签 4.2上传到私有仓库 4.3列出私有仓库所有镜像 4.4列出私有仓库的镜像的所有标签 5.先删除原有镜像再拉取私有仓库镜…

Python 全栈体系【四阶】(三十七)

第五章 深度学习 八、目标检测 3. 目标检测模型 3.1 R-CNN 系列 3.1.1 R-CNN 3.1.1.1 定义 R-CNN(全称 Regions with CNN features) ,是 R-CNN 系列的第一代算法,其实没有过多的使用“深度学习”思想,而是将“深度学习”和传统的“计算…

华为配置mDNS网关示例(AP与AC间二层转发)

华为配置mDNS网关示例(AP与AC间二层转发) 组网图形 图1 配置mDNS网关组网图 组网需求配置思路操作步骤配置文件 组网需求 如图1所示,某企业的移动终端通过WLAN连接网络,AP_1和AP_2分别与AC之间采用二层转发。部门1和部门2分别属…

RakSmart站群服务器租用注意事项科普

随着互联网的飞速发展,站群运营成为越来越多企业和个人的选择。而RakSmart作为知名的服务器提供商,其站群服务器租用服务备受关注。在租用RakSmart站群服务器时,源库建议有一些关键的注意事项需要特别留意,以确保服务器的稳定运行…

SpringBoot学习之SpringBoot3集成OpenApi(三十八)

Springboot升级到Springboot3以后,就彻底放弃了对之前swagger的支持,转而重新支持最新的OpenApi,今天我们通过一个实例初步看看OpenApi和Swagger之间的区别. 一、POM依赖 我的POM文件如下,仅作参考: <?xml version="1.0" encoding="UTF-8"?>…

鼓吹开源无前途,Meta却开源了Llama 3模型,无需注册在线即可使用

Meta AI一直是人工智能领域开源领域的领导者&#xff0c;一边是OpenAI鼓吹闭源才是人工智能大模型的未来&#xff0c;但是Meta AI却开源了自己的Llama 3大模型&#xff0c;且Llama 3开源模型支持80亿与700亿参数&#xff0c;而未来更大的4000亿参数大模型还在继续训练中。其Lla…

webpack3升级webpack4遇到的各种问题汇总

webpack3升级webpack4遇到的各种问题汇总 问题1 var outputNamecompilation.mainTemplate.applyPluginWaterfull(asset-path,outputOptions.filename,{......)TypeError: compilation.mainTemplate.applyPluginsWaterfall is not a function解决方法 html-webpack-plugin 版…

机器学习实战-聚类算法

聚类算法是一种无监督学习的算法&#xff0c;用于将数据集中的数据分成不同的聚类或组。聚类算法是数据挖掘和机器学习领域中常见的技术之一&#xff0c;具有广泛的应用。 以下是聚类算法的一些知识点&#xff1a; 聚类算法的目的是将数据集划分为不同的组&#xff0c;使得组内…

【酱浦菌-爬虫项目】爬取百度文库文档

1. 首先&#xff0c;定义了一个变量url&#xff0c;指向百度文库的搜索接口 ‘https://wenku.baidu.com/gsearch/rec/pcviewdocrec’。 2. 然后&#xff0c;设置了请求参数data&#xff0c;包括文档ID&#xff08;docId&#xff09;和查询关键词&#xff08;query&#xff09;。…

【蓝桥杯C++A组省三 | 一场勇敢的征途与致19岁的信】

随着4.13西大四楼考场的倒计时结束… 就这样蓝桥杯落幕了 省三的名次既满足又不甘心&#xff0c;但又确乎说得上是19岁途中的又一枚勋章 从去年得知&#xff0c;纠结是否要报名、到寒假开始战战兢兢地准备、陆续开始创作博客&#xff0c;记录好题和成长……感谢你们的关注&…

Flask表单详解

Flask表单详解 概述跨站请求伪造保护表单类把表单渲染成HTML在视图函数中处理表单重定向和用户会话Flash消息 概述 尽管 Flask 的请求对象提供的信息足够用于处理 Web 表单&#xff0c;但有些任务很单调&#xff0c;而且要重复操作。比如&#xff0c;生成表单的 HTML 代码和验…

偏自相关系数的等价定义

第k个回归系数的值 原始定义

将两个YOLO格式的数据集合并,并保持相同类别

1. 需求分析 最近在做两个YOLO格式的数据集合并&#xff0c;第一个数据集包含了第二个数据集的类别&#xff0c;但是相应的类别id对应不住&#xff0c;需要修改第二个数据集的类别标签与第一个数据集对应住。 2. 修改第二个数据集标签对应 2.1 实现思路 导入所需的库&#x…

CCF-CSP真题题解:201409-2 画图

201409-2 画图 #include <iostream> #include <cstring> #include <algorithm> using namespace std;const int N 110;int n; bool a[N][N];int main() {scanf("%d", &n);while (n--) {int x1, y1, x2, y2;scanf("%d%d%d%d", &…

R语言的学习——day1

将数据框中某一列数据改成行名 代码 结果

社交媒体数据恢复:Skype国内、际版

恢复已删除的Skype聊天记录可能需要一些操作&#xff0c;但请注意&#xff0c;这不一定总是可行的&#xff0c;并且可能需要一些技术知识。以下是一些步骤&#xff0c;您可以尝试恢复您的Skype聊天记录&#xff1a; 1. 检查备份&#xff1a; - 如果您有Skype备份&#xff0…

Ollama配置webui连接大预言模型

Ollama配置Web UI连接大预言模型 默认ollama安装后&#xff0c;chat对话只有命令行界面&#xff0c;交互体验较差。借助open-webui可以通过web界面连接ollama&#xff0c;从而实现类似chatgpt式的web交互体验。 使用家用PC实践记录如下&#xff1a; 1. 环境配置 本次使用的操作…
最新文章