Closed shijieheping closed 2 years ago
感谢up主! 为了添加泛域名,我得做以下修改
''' [root@nuc nginx]# cat ~/bin/aliyunDDNS.sh
PATH=$PATH:/usr/local/bin
aliddns_name="*" #子域名, 例如abc.def.com, 这里填abc aliddns_type="A" #A是IPV4, AAAA是IPV6 #################################
ipv4_url="http://ipv4.icanhazip.com" #################################
ipv6_url="http://ipv6.icanhazip.com"
#################################
cpu="amd64" #################################
#####################################
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
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"
wget -q -O - $ipv6_url
wget -q -O - $ipv4_url
echo "读取阿里云解析记录:$aliddns_name.$aliddns_domain"
/root/aliyun alidns DescribeDomainRecords --DomainName $aliddns_domain --RRKeyWord $aliddns_name --Type AAAA | grep -E "Value" | cut -d '"' -f4
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"
bash -c "$cmd"
echo $text | grep -Eo '"Value": "[0123456789abcdef:.]+"' | cut -d'"' -f4
echo $text | grep -Eo '"RecordId": "[0-9]+"' | cut -d':' -f2 | tr -d '"'
if [ "$server_ip" = "" ]; then
echo "未找到有效记录,准备添加记录。。。" echo "添加解析记录:$aliddns_name.$aliddns_domain,$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
bash -c "$cmd" | grep -Eo '"RecordId": "[0-9]+"' | cut -d':' -f2 | tr -d '"'
echo "DNS服务器读取IP与本地IP不匹配,准备修改解析记录。。。" echo "修改解析记录:$aliddns_name.$aliddns_domain,$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"
aliyun alidns DescribeDomainRecords --DomainName $aliddns_domain --RRKeyWord $aliddns_name --Type $aliddns_type | grep -E "Value" | cut -d '"' -f4
if [ "$server_ip" == "$ip" ]; then echo "修改解析记录成功!" exit 0 else echo "修改解析记录失败!" exit 3 fi else #无需修改解析记录 echo "DNS服务器读取IP与本地IP匹配,无需上传IP。。。" exit 0 fi
fi '''
很好👍👍
关闭问题
感谢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
添加解析记录
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升级解析记录
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"fi '''