├── .gitignore ├── README.md ├── cf-s1.sh ├── cf.sh ├── go ├── hw.sh ├── 华为云获取Token.pdf └── 相关作品 ├── DNSwitcher-master.zip └── dns_lb-main.zip /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.bak 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DNS-AUTO-Switch 2 | 3 | 自动检测服务器故障,并自动使用API修改并切换DNS解析,支持华为云DNS和CloudFlareDNS 4 | 5 | Automatically detect server failures, and automatically use API to modify and switch DNS resolution, support Huawei Cloud DNS and CloudFlareDNS 6 | 7 | ## 关联作品 8 | 9 | https://github.com/yxkumad/dns_lb 10 | 11 | https://github.com/TorchPing/go-torch 12 | 13 | https://github.com/yulewang/cloudflare-api-v4-ddns 14 | 15 | https://github.com/lllvcs/huaweicloud_ddns 16 | 17 | # 如何使用 18 | 19 | 我TM,2021了还有人不知道SH怎么用? 20 | 21 | 对应路径bash xxx.sh 或者./xxx.sh 22 | 23 | # 如何配置 24 | 25 | 请阅读博客介绍文档 26 | 27 | https://www.blueskyxn.com/202102/4210.html 28 | 29 | # 如何安装 30 | 31 | 我TM,SH单文件脚本而已,还不会? 32 | 33 | 如果不会curl,wget,那我求你用宝塔面板上传行不行 34 | 35 | 不用宝塔还不会的沙雕,别TM不懂装懂行不行,像个小丑 36 | 37 | 【别忘记装GO-torch,帮你改名go一起塞进仓库了】 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /cf-s1.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | 6 | # Configuration 7 | echo "https://github.com/BlueSkyXN/DNS-AUTO-Switch" 8 | echo "IP+1不好吗:https://www.blueskyxn.com" 9 | echo "BlueSkyXN:开始读取配置" 10 | # Ping API 11 | PING_API=http://IP:8080/ping 12 | echo "BlueSkyXN:Ping·API读取成功" 13 | #使用https://github.com/TorchPing/go-torch 自行搭建测试API 默认监听端口为8080 你也可以用域名反代 记得有/ping 14 | 15 | # Original IP 常规IP 16 | ORG_IP=1.1.1.1 17 | 18 | # Failure IP 失败后IP 19 | FAIL_IP1=1.1.1.1 20 | FAIL_IP2=1.1.1.1 21 | FAIL_IP3=1.1.1.1 22 | FAIL_IP4=1.1.1.1 23 | 24 | 25 | # Telegram Bot Token 26 | TG_BOT_TOKEN=1254xxxx:AxxxxxxxxxxxxY 27 | 28 | # Telegram Chat ID 29 | TG_CHATID=13xxxx741 30 | 31 | # API key, see https://www.cloudflare.com/a/account/my-account, 32 | # incorrect api-key results in E_UNAUTH error 33 | CFKEY=d02732xxxxxxxxxxxxxxxxx689d80 34 | 35 | # Username, eg: user@example.com 36 | CFUSER=xxxxxx@qq.com 37 | 38 | # Zone name, eg: example.com 39 | CFZONE_NAME=blueskyxn.com 40 | 41 | # Hostname to update, eg: homeserver.example.com 42 | CFRECORD_NAME=www.blueskyxn.com 43 | 44 | # Record type, A(IPv4)|AAAA(IPv6), default IPv4 45 | CFRECORD_TYPE=A 46 | 47 | # Cloudflare TTL for record, between 120 and 86400 seconds 48 | CFTTL=120 49 | 50 | # If required settings are missing just exit 51 | if [ "$CFKEY" = "" ]; then 52 | echo "Missing api-key, get at: https://www.cloudflare.com/a/account/my-account" 53 | echo "and save in ${0} or using the -k flag" 54 | exit 2 55 | fi 56 | if [ "$CFUSER" = "" ]; then 57 | echo "Missing username, probably your email-address" 58 | echo "and save in ${0} or using the -u flag" 59 | exit 2 60 | fi 61 | if [ "$CFRECORD_NAME" = "" ]; then 62 | echo "Missing hostname, what host do you want to update?" 63 | echo "save in ${0} or using the -h flag" 64 | exit 2 65 | fi 66 | 67 | # If the hostname is not a FQDN 68 | if [ "$CFRECORD_NAME" != "$CFZONE_NAME" ] && ! [ -z "${CFRECORD_NAME##*$CFZONE_NAME}" ]; then 69 | CFRECORD_NAME="$CFRECORD_NAME.$CFZONE_NAME" 70 | echo " => Hostname is not a FQDN, assuming $CFRECORD_NAME" 71 | fi 72 | 73 | # Get zone_identifier & record_identifier 74 | ID_FILE=$HOME/.cf-id_$CFRECORD_NAME.txt 75 | if [ -f $ID_FILE ] && [ $(wc -l $ID_FILE | cut -d " " -f 1) == 4 ] \ 76 | && [ "$(sed -n '3,1p' "$ID_FILE")" == "$CFZONE_NAME" ] \ 77 | && [ "$(sed -n '4,1p' "$ID_FILE")" == "$CFRECORD_NAME" ]; then 78 | CFZONE_ID=$(sed -n '1,1p' "$ID_FILE") 79 | CFRECORD_ID=$(sed -n '2,1p' "$ID_FILE") 80 | else 81 | echo "Updating zone_identifier & record_identifier" 82 | CFZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$CFZONE_NAME" -H "X-Auth-Email: $CFUSER" -H "X-Auth-Key: $CFKEY" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 ) 83 | CFRECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records?name=$CFRECORD_NAME" -H "X-Auth-Email: $CFUSER" -H "X-Auth-Key: $CFKEY" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 ) 84 | echo "$CFZONE_ID" > $ID_FILE 85 | echo "$CFRECORD_ID" >> $ID_FILE 86 | echo "$CFZONE_NAME" >> $ID_FILE 87 | echo "$CFRECORD_NAME" >> $ID_FILE 88 | fi 89 | 90 | # Get current and old WAN ip 91 | PRESENT_IP_FILE=$HOME/.ip_$CFRECORD_NAME.txt 92 | if [ -f $PRESENT_IP_FILE ]; then 93 | OLD_PRESENT_IP=`cat $PRESENT_IP_FILE` 94 | else 95 | echo "No file, need IP,请前往root,建立.ip_域名.txt如www.blueskyxn.com,然后填入IP" 96 | OLD_PRESENT_IP="" 97 | fi 98 | 99 | # Check service failure 100 | CHECK=$(curl -s "$PING_API/$OLD_PRESENT_IP/22") 101 | 102 | if [ "$(echo $CHECK | grep "\"status\":true")" != "" ]; then 103 | echo "No service failure found. No DNS record update required. " 104 | exit 0 105 | else 106 | echo "Service failure found. Updating DNS to $FAIL_IP1" 107 | RESPONSE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records/$CFRECORD_ID" \ 108 | -H "X-Auth-Email: $CFUSER" \ 109 | -H "X-Auth-Key: $CFKEY" \ 110 | -H "Content-Type: application/json" \ 111 | --data "{\"id\":\"$CFZONE_ID\",\"type\":\"$CFRECORD_TYPE\",\"name\":\"$CFRECORD_NAME\",\"content\":\"$FAIL_IP1\", \"ttl\":$CFTTL}") 112 | curl -s "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage?chat_id=$TG_CHATID&text=Service failure found. Updating DNS record $CFZONE_NAME to $FAIL_IP1" 113 | echo $FAIL_IP1 > $PRESENT_IP_FILE 114 | OLD_PRESENT_IP=`cat $PRESENT_IP_FILE` 115 | fi 116 | 117 | if [ "$(echo $CHECK | grep "\"status\":true")" != "" ]; then 118 | echo "No service failure found. No DNS record update required. " 119 | exit 0 120 | else 121 | echo "Service failure found. Updating DNS to $FAIL_IP2" 122 | RESPONSE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records/$CFRECORD_ID" \ 123 | -H "X-Auth-Email: $CFUSER" \ 124 | -H "X-Auth-Key: $CFKEY" \ 125 | -H "Content-Type: application/json" \ 126 | --data "{\"id\":\"$CFZONE_ID\",\"type\":\"$CFRECORD_TYPE\",\"name\":\"$CFRECORD_NAME\",\"content\":\"$FAIL_IP2\", \"ttl\":$CFTTL}") 127 | curl -s "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage?chat_id=$TG_CHATID&text=Service failure found. Updating DNS record $CFZONE_NAME to $FAIL_IP2" 128 | echo $FAIL_IP2 > $PRESENT_IP_FILE 129 | OLD_PRESENT_IP=`cat $PRESENT_IP_FILE` 130 | fi 131 | 132 | if [ "$(echo $CHECK | grep "\"status\":true")" != "" ]; then 133 | echo "No service failure found. No DNS record update required. " 134 | exit 0 135 | else 136 | echo "Service failure found. Updating DNS to $FAIL_IP3" 137 | RESPONSE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records/$CFRECORD_ID" \ 138 | -H "X-Auth-Email: $CFUSER" \ 139 | -H "X-Auth-Key: $CFKEY" \ 140 | -H "Content-Type: application/json" \ 141 | --data "{\"id\":\"$CFZONE_ID\",\"type\":\"$CFRECORD_TYPE\",\"name\":\"$CFRECORD_NAME\",\"content\":\"$FAIL_IP3\", \"ttl\":$CFTTL}") 142 | curl -s "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage?chat_id=$TG_CHATID&text=Service failure found. Updating DNS record $CFZONE_NAME to $FAIL_IP3" 143 | echo $FAIL_IP3 > $PRESENT_IP_FILE 144 | OLD_PRESENT_IP=`cat $PRESENT_IP_FILE` 145 | fi 146 | 147 | 148 | if [ "$RESPONSE" != "${RESPONSE%success*}" ] && [ "$(echo $RESPONSE | grep "\"success\":true")" != "" ]; then 149 | echo "Updated succesfuly!" 150 | exit 151 | else 152 | echo 'Something went wrong :(' 153 | echo "Response: $RESPONSE" 154 | exit 1 155 | fi 156 | -------------------------------------------------------------------------------- /cf.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | 6 | # Configuration 7 | echo "https://github.com/BlueSkyXN/DNS-AUTO-Switch" 8 | echo "IP+1不好吗:https://www.blueskyxn.com" 9 | echo "BlueSkyXN:开始读取配置" 10 | # Ping API 11 | PING_API=http://IP:8080/ping 12 | echo "BlueSkyXN:Ping·API读取成功" 13 | #使用https://github.com/TorchPing/go-torch 自行搭建测试API 默认监听端口为8080 你也可以用域名反代 记得有/ping 14 | 15 | # Original IP 常规IP 16 | ORG_IP=1.1.1.1 17 | 18 | # Failure IP 失败后IP 19 | FAIL_IP=1.1.1.1 20 | 21 | # Telegram Bot Token 22 | TG_BOT_TOKEN=1254xxxx:AxxxxxxxxxxxxY 23 | 24 | # Telegram Chat ID 25 | TG_CHATID=13xxxx741 26 | 27 | # API key, see https://www.cloudflare.com/a/account/my-account, 28 | # incorrect api-key results in E_UNAUTH error 29 | CFKEY=d02732xxxxxxxxxxxxxxxxx689d80 30 | 31 | # Username, eg: user@example.com 32 | CFUSER=xxxxxx@qq.com 33 | 34 | # Zone name, eg: example.com 35 | CFZONE_NAME=blueskyxn.com 36 | 37 | # Hostname to update, eg: homeserver.example.com 38 | CFRECORD_NAME=www.blueskyxn.com 39 | 40 | # Record type, A(IPv4)|AAAA(IPv6), default IPv4 41 | CFRECORD_TYPE=A 42 | 43 | # Cloudflare TTL for record, between 120 and 86400 seconds 44 | CFTTL=120 45 | 46 | # If required settings are missing just exit 47 | if [ "$CFKEY" = "" ]; then 48 | echo "Missing api-key, get at: https://www.cloudflare.com/a/account/my-account" 49 | echo "and save in ${0} or using the -k flag" 50 | exit 2 51 | fi 52 | if [ "$CFUSER" = "" ]; then 53 | echo "Missing username, probably your email-address" 54 | echo "and save in ${0} or using the -u flag" 55 | exit 2 56 | fi 57 | if [ "$CFRECORD_NAME" = "" ]; then 58 | echo "Missing hostname, what host do you want to update?" 59 | echo "save in ${0} or using the -h flag" 60 | exit 2 61 | fi 62 | 63 | # If the hostname is not a FQDN 64 | if [ "$CFRECORD_NAME" != "$CFZONE_NAME" ] && ! [ -z "${CFRECORD_NAME##*$CFZONE_NAME}" ]; then 65 | CFRECORD_NAME="$CFRECORD_NAME.$CFZONE_NAME" 66 | echo " => Hostname is not a FQDN, assuming $CFRECORD_NAME" 67 | fi 68 | 69 | # Get zone_identifier & record_identifier 70 | ID_FILE=$HOME/.cf-id_$CFRECORD_NAME.txt 71 | if [ -f $ID_FILE ] && [ $(wc -l $ID_FILE | cut -d " " -f 1) == 4 ] \ 72 | && [ "$(sed -n '3,1p' "$ID_FILE")" == "$CFZONE_NAME" ] \ 73 | && [ "$(sed -n '4,1p' "$ID_FILE")" == "$CFRECORD_NAME" ]; then 74 | CFZONE_ID=$(sed -n '1,1p' "$ID_FILE") 75 | CFRECORD_ID=$(sed -n '2,1p' "$ID_FILE") 76 | else 77 | echo "Updating zone_identifier & record_identifier" 78 | CFZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$CFZONE_NAME" -H "X-Auth-Email: $CFUSER" -H "X-Auth-Key: $CFKEY" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 ) 79 | CFRECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records?name=$CFRECORD_NAME" -H "X-Auth-Email: $CFUSER" -H "X-Auth-Key: $CFKEY" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 ) 80 | echo "$CFZONE_ID" > $ID_FILE 81 | echo "$CFRECORD_ID" >> $ID_FILE 82 | echo "$CFZONE_NAME" >> $ID_FILE 83 | echo "$CFRECORD_NAME" >> $ID_FILE 84 | fi 85 | 86 | # Get current and old WAN ip 87 | PRESENT_IP_FILE=$HOME/.ip_$CFRECORD_NAME.txt 88 | if [ -f $PRESENT_IP_FILE ]; then 89 | OLD_PRESENT_IP=`cat $PRESENT_IP_FILE` 90 | else 91 | echo "No file, need IP,请前往root,建立.ip_域名.txt如www.blueskyxn.com,然后填入IP" 92 | OLD_PRESENT_IP="" 93 | fi 94 | 95 | # Check service failure 96 | CHECK=$(curl -s "$PING_API/$ORG_IP/22") 97 | 98 | if [ "$(echo $CHECK | grep "\"status\":true")" != "" ]; then 99 | if [ "$ORG_IP" = "$OLD_PRESENT_IP" ]; then 100 | echo "No service failure found. No DNS record update required. " 101 | exit 0 102 | fi 103 | echo "No service failure found. Updating DNS to $ORG_IP" 104 | RESPONSE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records/$CFRECORD_ID" \ 105 | -H "X-Auth-Email: $CFUSER" \ 106 | -H "X-Auth-Key: $CFKEY" \ 107 | -H "Content-Type: application/json" \ 108 | --data "{\"id\":\"$CFZONE_ID\",\"type\":\"$CFRECORD_TYPE\",\"name\":\"$CFRECORD_NAME\",\"content\":\"$ORG_IP\", \"ttl\":$CFTTL}") 109 | curl -s "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage?chat_id=$TG_CHATID&text=No service failure found. Updating DNS record $CFZONE_NAME to $ORG_IP" 110 | echo $ORG_IP > $PRESENT_IP_FILE 111 | else 112 | if [ "$FAIL_IP" = "$OLD_PRESENT_IP" ]; then 113 | echo "Service failure found. No DNS record update required. " 114 | exit 0 115 | fi 116 | echo "Service failure found. Updating DNS to $FAIL_IP" 117 | RESPONSE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records/$CFRECORD_ID" \ 118 | -H "X-Auth-Email: $CFUSER" \ 119 | -H "X-Auth-Key: $CFKEY" \ 120 | -H "Content-Type: application/json" \ 121 | --data "{\"id\":\"$CFZONE_ID\",\"type\":\"$CFRECORD_TYPE\",\"name\":\"$CFRECORD_NAME\",\"content\":\"$FAIL_IP\", \"ttl\":$CFTTL}") 122 | curl -s "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage?chat_id=$TG_CHATID&text=Service failure found. Updating DNS record $CFZONE_NAME to $FAIL_IP" 123 | echo $FAIL_IP > $PRESENT_IP_FILE 124 | fi 125 | 126 | if [ "$RESPONSE" != "${RESPONSE%success*}" ] && [ "$(echo $RESPONSE | grep "\"success\":true")" != "" ]; then 127 | echo "Updated succesfuly!" 128 | exit 129 | else 130 | echo 'Something went wrong :(' 131 | echo "Response: $RESPONSE" 132 | exit 1 133 | fi 134 | -------------------------------------------------------------------------------- /go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlueSkyXN/DNS-AUTO-Switch/cfd373edb4654fb0b8861d091037c960aa713279/go -------------------------------------------------------------------------------- /hw.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | 6 | # Configuration 7 | echo "https://github.com/BlueSkyXN/DNS-AUTO-Switch" 8 | echo "IP+1不好吗:https://www.blueskyxn.com" 9 | echo "BlueSkyXN:开始读取配置" 10 | # Ping API 11 | PING_API=http://IP:8080/ping 12 | echo "BlueSkyXN:Ping·API读取成功" 13 | #使用https://github.com/TorchPing/go-torch 自行搭建测试API 默认监听端口为8080 你也可以用域名反代,记得有/ping 14 | 15 | # Original IP 16 | ORG_IP=1.1.1.1 17 | 18 | # Failure IP 19 | FAIL_IP=1.1.1.1 20 | 21 | # Telegram Bot Token 22 | TG_BOT_TOKEN=1254xxxx:AxxxxxxxxxxxxY 23 | 24 | # Telegram Chat ID 25 | TG_CHATID=13xxxx741 26 | 27 | #域名 eg.blueskyxn.com 28 | domain="blueskyxn.com" 29 | #主机名 eg·www 30 | host="www" 31 | 32 | #End Point 终端地址 请根据地域选择 33 | iam="iam.myhuaweicloud.com" 34 | #eg·iam="iam.ap-southeast-1.myhuaweicloud.com" 35 | #eg·iam="iam.ap-southeast-3.myhuaweicloud.com" 36 | 37 | dns="dns.myhuaweicloud.com" 38 | #eg·dns="dns.ap-southeast-1.myhuaweicloud.com" 39 | #eg·dns="dns.ap-southeast-3.myhuaweicloud.com" 40 | 41 | echo "BlueSkyXN:配置读取完毕,开启获取Token" 42 | 43 | token_X="$( 44 | curl -L -k -s -D - -X POST \ 45 | "https://$iam/v3/auth/tokens" \ 46 | -H 'content-type: application/json' \ 47 | -d '{ 48 | "auth": { 49 | "identity": { 50 | "methods": [ 51 | "password" 52 | ], 53 | "password": { 54 | "user": { 55 | "domain": { 56 | "name": "菊花帐号名" 57 | }, 58 | "name": "IAM用户名", 59 | "password": "IAM密码" 60 | } 61 | } 62 | }, 63 | "scope": { 64 | "domain": { 65 | "name": "菊花帐号名" 66 | } 67 | } 68 | } 69 | }' | grep X-Subject-Token 70 | )" 71 | echo "BlueSkyXN:Token应该获取成功了!唔呣" 72 | token="$(echo $token_X | awk -F ' ' '{print $2}')" 73 | echo "BlueSkyXN:开启正常运行" 74 | recordsets="$( 75 | curl -L -k -s -D - \ 76 | "https://$dns/v2/recordsets?name=$host.$domain." \ 77 | -H 'content-type: application/json' \ 78 | -H 'X-Auth-Token: '$token | grep -o "id\":\"[0-9a-z]*\"" | awk -F : '{print $2}' | grep -o "[a-z0-9]*" 79 | )" 80 | 81 | RECORDSET_ID=$(echo $recordsets | cut -d ' ' -f 1) 82 | ZONE_ID=$(echo $recordsets | cut -d ' ' -f 2 | cut -d ' ' -f 2) 83 | 84 | 85 | # Get current and old WAN ip 86 | 87 | PRESENT_IP_FILE=$HOME/.ip_$host.$domain.txt 88 | if [ -f $PRESENT_IP_FILE ]; then 89 | OLD_PRESENT_IP=`cat $PRESENT_IP_FILE` 90 | else 91 | echo "No file, need IP,请前往root,建立.ip_$host.$domain.txt,然后填入IP" 92 | OLD_PRESENT_IP="" 93 | fi 94 | 95 | # Check service failure 96 | CHECK=$(curl -s "$PING_API/$ORG_IP/22") 97 | 98 | if [ "$(echo $CHECK | grep "\"status\":true")" != "" ]; then 99 | if [ "$ORG_IP" = "$OLD_PRESENT_IP" ]; then 100 | echo "No service failure found. No DNS record update required. " 101 | exit 0 102 | fi 103 | echo "No service failure found. Updating DNS to $ORG_IP" 104 | RESPONSE=$(curl -X PUT -L -k -s \ 105 | "https://$dns/v2/zones/$ZONE_ID/recordsets/$RECORDSET_ID" \ 106 | -H "Content-Type: application/json" \ 107 | -H "X-Auth-Token: $token" \ 108 | -d "{\"records\": [\"$ORG_IP\"],\"ttl\": 1}") 109 | curl -s "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage?chat_id=$TG_CHATID&text=No service failure found. Updating DNS record $host.$domain to $ORG_IP" 110 | echo $ORG_IP > $PRESENT_IP_FILE 111 | else 112 | if [ "$FAIL_IP" = "$OLD_PRESENT_IP" ]; then 113 | echo "Service failure found. No DNS record update required. " 114 | exit 0 115 | fi 116 | echo "Service failure found. Updating DNS to $FAIL_IP" 117 | RESPONSE=$(curl -X PUT -L -k -s \ 118 | "https://$dns/v2/zones/$ZONE_ID/recordsets/$RECORDSET_ID" \ 119 | -H "Content-Type: application/json" \ 120 | -H "X-Auth-Token: $token" \ 121 | -d "{\"records\": [\"$FAIL_IP\"],\"ttl\": 1}") 122 | curl -s "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage?chat_id=$TG_CHATID&text=Service failure found. Updating DNS record $host.$domain to $FAIL_IP" 123 | echo $FAIL_IP > $PRESENT_IP_FILE 124 | fi 125 | 126 | if [ "$RESPONSE" != "${RESPONSE%success*}" ] && [ "$(echo $RESPONSE | grep "\"success\":true")" != "" ]; then 127 | echo "Updated succesfuly!" 128 | exit 129 | else 130 | echo 'Something went wrong :(' 131 | echo "Response: $RESPONSE" 132 | exit 1 133 | fi 134 | -------------------------------------------------------------------------------- /华为云获取Token.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlueSkyXN/DNS-AUTO-Switch/cfd373edb4654fb0b8861d091037c960aa713279/华为云获取Token.pdf -------------------------------------------------------------------------------- /相关作品/DNSwitcher-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlueSkyXN/DNS-AUTO-Switch/cfd373edb4654fb0b8861d091037c960aa713279/相关作品/DNSwitcher-master.zip -------------------------------------------------------------------------------- /相关作品/dns_lb-main.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlueSkyXN/DNS-AUTO-Switch/cfd373edb4654fb0b8861d091037c960aa713279/相关作品/dns_lb-main.zip --------------------------------------------------------------------------------