yfyhboy / Aliyun-DDNS-shell

轻量化的shell脚本实现阿里云DDNS,不依赖docker
6 stars 2 forks source link

为了添加泛域名,我得做以下修改 #1

Closed shijieheping closed 2 years ago

shijieheping commented 2 years ago

感谢up主! 为了添加泛域名,我得做以下修改

''' [root@nuc nginx]# cat ~/bin/aliyunDDNS.sh

!/bin/sh

PATH=$PATH:/usr/local/bin

设置自己的阿里云DDNS信息

aliddns_name="*" #子域名, 例如abc.def.com, 这里填abc aliddns_type="A" #A是IPV4, AAAA是IPV6 #################################

获取本机IPV4的网址

手动测试选择一个

ipv4_url="http://v4.ipv6-test.com/api/myip.php"

ipv4_url="http://ipv4.icanhazip.com" #################################

获取本机IPV6的网址

手动测试选择一个

ipv6_url="http://v6.ip.zxinc.org/getip"

ipv6_url="http://v6.ipv6-test.com/api/myip.php"

ipv6_url="http://ipv6.icanhazip.com"

ipv6_url="http://v4v6.ipv6-test.com/api/myip.php"

#################################

CPU类型,目前仅支持arm64和amd64

cpu="arm64"

cpu="amd64" #################################

#####################################

以下内容非必要不要修改

#####################################

若未安装阿里云cli,则安装阿里云cli

echo $PATH cg=$(aliyun version 2>&1) cg=${cg:0:1} if [[ ! "$cg" -gt 0 ]] 2>/dev/null; then echo 下载阿里cli wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-$cpu.tgz echo 解压 tar xzvf aliyun-cli-linux-latest-amd64.tgz echo 复制到系统文件夹 cp aliyun /usr/local/bin echo cli初始化设置 aliyun configure set \ --profile akProfile \ --mode AK \ --region cn-hangzhou \ --access-key-id $aliddns_ak \ --access-key-secret $aliddns_sk echo 安装阿里云cli结束 fi

获取本地ip地址

if [ "$aliddns_type" == "AAAA" ]; then ip=wget -q -O - $ipv6_url elif [ "$aliddns_type" == "A" ]; then ip=wget -q -O - $ipv4_url else echo 解析类型设置错误,退出。。。 exit 1 fi echo "本地IP地址:$ip"

读取阿里云解析记录

echo "读取阿里云解析记录:$aliddns_name.$aliddns_domain"

server_ip=/root/aliyun alidns DescribeDomainRecords --DomainName $aliddns_domain --RRKeyWord $aliddns_name --Type AAAA | grep -E "Value" | cut -d '"' -f4

text=aliyun alidns DescribeDomainRecords --DomainName $aliddns_domain --RRKeyWord $aliddns_name --Type $aliddns_type

cmd="aliyun alidns DescribeDomainRecords --DomainName $aliddns_domain --RRKeyWord $aliddns_name --Type $aliddns_type" text=bash -c "$cmd" echo $text server_ip=echo $text | grep -Eo '"Value": "[0123456789abcdef:.]+"' | cut -d'"' -f4 recordid=echo $text | grep -Eo '"RecordId": "[0-9]+"' | cut -d':' -f2 | tr -d '"' echo "读取到解析记录:$server_ip" echo "读取到recordid:$recordid"

根据阿里云解析记录的结果处理事件

if [ "$server_ip" = "" ]; then

添加解析记录

echo "未找到有效记录,准备添加记录。。。"
echo "添加解析记录:$aliddns_name.$aliddns_domain,$ip"

server_ip=aliyun alidns AddDomainRecord --DomainName $aliddns_domain --RR $aliddns_name --Type $aliddns_type --Value $ip | grep -Eo '"RecordId": "[0-9]+"' | cut -d':' -f2 | tr -d '"'

cmd="aliyun alidns AddDomainRecord --DomainName $aliddns_domain --RR $aliddns_name --Type $aliddns_type --Value $ip" bash -c "$cmd" server_ip=bash -c "$cmd" | grep -Eo '"RecordId": "[0-9]+"' | cut -d':' -f2 | tr -d '"' echo "返回ID:$server_ip" if [ "$server_ip" = "" ]; then echo "添加解析记录失败!" exit 2 else echo "添加解析记录成功!" exit 0 fi else if [ "$server_ip" != "$ip" ]; then

升级解析记录

    echo "DNS服务器读取IP与本地IP不匹配,准备修改解析记录。。。"
    echo "修改解析记录:$aliddns_name.$aliddns_domain,$ip"

aliyun alidns UpdateDomainRecord --RR $aliddns_name --RecordId $recordid --Type $aliddns_type --Value $ip

cmd="aliyun alidns UpdateDomainRecord --RR $aliddns_name --RecordId $recordid --Type $aliddns_type --Value $ip" bash -c "$cmd" echo "修改完成,尝试再次读取校验。。。" sleep 10 server_ip=aliyun alidns DescribeDomainRecords --DomainName $aliddns_domain --RRKeyWord $aliddns_name --Type $aliddns_type | grep -E "Value" | cut -d '"' -f4 echo "读取完成,读取IP为:$server_ip"

    if [ "$server_ip" == "$ip" ]; then
        echo "修改解析记录成功!"
        exit 0
    else
        echo "修改解析记录失败!"
        exit 3
    fi
else
    #无需修改解析记录
    echo "DNS服务器读取IP与本地IP匹配,无需上传IP。。。"
    exit 0
fi

fi '''

yfyhboy commented 2 years ago

很好👍👍

yfyhboy commented 2 years ago

关闭问题