dynv6的操作
解析提供者:
dynv6
网站:
https://dynv6.com/zones
创建域名
创建token
win主机上的操作
安装python环境。
下载地址
https://www.python.org/downloads/
点击downlaod下载安装即可
安装python第三方库
requests
- 简介:
requests
库是一个流行的第三方库,用于处理 HTTP 请求。 - 用途: 发送 GET、POST 等 HTTP 请求,处理响应数据。
- 安装方法: 你需要使用
pip
来安装requests
库。
pip install requests
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
获得网卡mac地址
用于定位解析那张网卡
在win运行cmd,在cmd终端执行ipconfig /all 命令查看网卡的mac地址
编写python代码
vim test.py
如下代码只需在入口函数处填写mac_address和token信息即可。
import re
import subprocess
import requests
def get_ipv6_address(mac_address):
try:
# 使用ipconfig命令获取网卡信息
result = subprocess.run(['ipconfig', '/all'], capture_output=True, text=True)
if result.returncode == 0:
output = result.stdout
# 使用正则表达式匹配适配器段落
adapters = re.findall(r'适配器 .*?:\n(.*?)\n\n', output, re.DOTALL)
for adapter in adapters:
# 检查是否包含给定的MAC地址
if mac_address in adapter:
# 查找IPv6地址
ipv6_match = re.search(r'IPv6 地址.*?:(.*?)(?:\n|$)', adapter)
if ipv6_match:
ipv6_address = ipv6_match.group(1).strip().split('(首选)')[0]
return ipv6_address
return "未找到匹配的网卡地址"
else:
return "无法执行ipconfig命令"
except Exception as e:
return f"发生错误:{str(e)}"
def send_dynv6_update_request(ipv6, token, domain):
# 构建URL
url = f"http://dynv6.com/api/update?hostname={domain}&token={token}&ipv6={ipv6}&ipv6prefix={ipv6}"
print('构建URL',url)
# 发送GET请求
response = requests.get(url)
# 返回响应内容
return response.text
if __name__ == "__main__":
print('begin...')
# 需要填写的参数
# 替换成你要更新ipv6所属网卡的MAC地址
mac_address = "mac"
# 替换成你的token
token = 'token'
#填写你要解析的域名
domain='domain'
#获取ipv6地址
ipv6_address = get_ipv6_address(mac_address)
print("MAC地址", mac_address, "对应的IPv6地址为:", ipv6_address)
ipv6 = ipv6_address
# 发送更新数据
response_text = send_dynv6_update_request(ipv6, token, domain)
print(response_text)
长期运行方式
注册服务的方式运行(建议),注意目标链接的python代码不一致。
https://blog.csdn.net/qq_25759279/article/details/141220138?spm=1001.2014.3001.5501
创建计划任务方式
编辑常规
新建触发器
新建操作
编辑条件
编辑设置
linux主机上的操作
需安装wget工具
以下是不同Linux发行版安装wget
工具的命令:
Ubuntu/Debian
sudo apt update # 更新包列表
sudo apt install wget # 安装wget
CentOS/RHEL
CentOS 7及以下版本:
sudo yum install wget # 使用yum安装wget
CentOS 8及更新版本:
sudo dnf install wget # 使用dnf安装wget
创建shell脚本
vim update_ipv6.sh
#!/bin/bash
# dynv6的API更新令牌
token='填写你的令牌'
hostname='填写你的域名'
# 网卡名
interf='ovs_bond0'
# 提取ovs_bond0接口的第一个全球IPv6单播地址
ipv6=$(ip -6 addr show dev $interf | grep 'inet6' | grep 'dynamic mngtmpaddr noprefixroute' | grep -v 'fe80' | grep -v 'deprecated' | awk '{print $2}' | cut -d/ -f1 | head -n 1)
# 打印提取到的IPv6地址
echo "Extracted IPv6: $ipv6"
# 使用wget命令更新dynv6的A记录
wget --no-check-certificate -q -O dynv6.log "http://dynv6.com/api/update?hostname=$hostname&token=$token&ipv6=$ipv6&ipv6prefix=$ipv6"
chmod +x update_ipv6.sh
添加脚本到 crontab
- 先确保脚本有可执行权限:
chmod +x update_ipv6.sh
- 使用
crontab -e
命令编辑crontab
:
crontab -e
- 添加以下行来安排脚本每天运行:
5 * * * * /path/to/your/update_ipv6.sh
这里要填写update_ipv6.sh脚本的绝对路径,pwd命令可查看当前目录路径。
- 保存并退出编辑器。新的
crontab
作业表将自动生效。
说明:crontab
的格式
每行 crontab
作业表的格式如下:
* * * * * command_to_execute
- - - - -
| | | | |
| | | | +---- 一周中的某一天 (0 - 7) (Sunday is both 0 and 7)
| | | +------ 一个月中的某一天 (1 - 31)
| | +-------- 一年中的某一月 (1 - 12)
| +---------- 一天中的某一小时 (0 - 23)
+------------ 一小时中的某一分钟 (0 - 59)