glmos-code-explain
如果家里有IPV6的,可以到dn删s删e删x删it.com上免费注册一个域名,有效期是一年的,一年过后如果无法免费续费,那么换号重注册就好了
dn**it默认的使用ipv4公网IP绑定的,但是他提供了ipv6的绑定方法,所以我就自己写了个脚本来定时绑定,代码如下
#!/bin/bash
# 用于存储最终生成的JSON数据
json_data='{
"domain": "注册的域名",
"update": ['
# 获取enp2s0 端口的IPv6地址信息
ipv6_addresses=$(ip addr show dev enp2s0 | grep -oP '(?<=inet6 ).*(?=\/)' | tr -d '%')
current_date=$(date "+%Y-%m-%d %H:%M:%S")
echo $current_date
echo "已获取IPv6地址信息,开始处理..."
# 循环处理每个IPv6地址
while read -r ipv6_address; do
# 简化生成update_entry的格式,尽量接近最终添加到update数组的要求
update_entry='{
"type": "AAAA",
"name": "",
"content": "'"$ipv6_address"'",
"ttl": 480
},'
echo "正在处理IPv6地址: $ipv6_address"
# 拼接update_entry到json_data的update数组部分
json_data="${json_data}${update_entry}"
done <<< "$ipv6_addresses"
# 完成json_data的拼接,添加结尾的 ']}'
json_data="${json_data}]}"
# 定义要写入的文件名
output_file="/vol4/1000/Docker/sh/ipv6_update.json"
target_content=$(cat "$output_file")
if [ "$target_content" != "${json_data}" ]; then
# 将json_data写入到文件中
echo "${json_data}" > "${output_file}"
# 设置API密钥、域名等信息
api_key="API密钥,到dn**it上获取"
domain_name="注册的域名"
curl -H "Content-Type: application/json" -H "apikey: ${api_key}" -H "domain: ${domain_name}" \
--data @${output_file} https://api.dn**it.com/dns/
fi
下载脚本
附件:ipupdate_ipv6.zip,获取文件路径,如 /vol4/1000/sh/ipupdate_ipv6.sh
进入控制台修改权限 sudo chmod +x /vol4/1000/sh/ipupdate_ipv6.sh
接着输入 crontab -e,打开定时任务输入
*/10 * * * * /vol4/1000/Docker/sh/ipupdate_ipv6.sh >> /vol4/1000/Docker/sh/logfile.log 2>&1
我的是每10分钟执行一次,只有ipv6地址改变了,才会更新