|  | 
 
| 看到有自动更新华为云dns的需求,正好自己写了个sh在用,这里把我的方法分享出来。 因为想放路由器的linux里跑所以现学的shell,大多都是东拼西凑,大佬见笑。
 
 先新建个xxx.sh文件,记得权限加一下
 
 
 CloudflareST自己下对应系统的版本吧,这里就不赘述了,解压放在和sh文件同级目录。
 
 复制代码#!/bin/bash
root_path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
./CloudflareST
BESTIP=$(sed -n "2,1p" "${root_path}"/result.csv | awk -F, '{print $1}')
BESTSPEED=$(sed -n "2,1p" "${root_path}"/result.csv | awk -F, '{print $6}')
 发现有时会测到速度全是0的结果,我不太清楚CloudflareST参数怎么写可以过滤,我是简单粗暴了自己判断了下如果是0就重新循环一遍。
 
 查下自己华为云dns账号是哪个区域
 https://developer.huaweicloud.com/intl/zh-cn/endpoint?DNS
 比如我的是ap-southeast-1,那我获取token的url就是https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
 
 获得token
 根据上面查到自己的url,替换到下方的链接里,然后把用户名和密码写进去,都正确的话获取的token是会在响应的header里确认到的
 下面的这段会在sh的同级目录把获取的header写入一个header_temp的文件然后读一下,这里这么写是因为我也不知道curl后怎么直接读取响应header,就放个文件读一下,如果有知道的麻烦教下,谢谢。
 
 
 复制代码curl -s -o /dev/null -Dheader_temp --location --request POST 'https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens' \
--header 'Content-Type: application/json' \
--data '{
    "auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "domain": {
                        "name": "IAM用户所属帐号名"
                    },
                    "name": "IAM用户名",            
                    "password": "IAM用户密码" 
                }
            }
        },
        "scope": {
            "project": {
                "name": "cn-north-1"               //项目名称
            }
        }
    }
}'
#读取Token
while read line
do
A="X-Subject-Token: "
string="$line"
B="${string:0:17}"
#echo ${str}
if [ "$B" == "$A" ]; then
Token="${string:17}"
fi
done < header_temp
 这里要通过token获取一些其他的数据 先打开header_temp把自己的token复制一下
 然后打开Postman软件
 Get方式https://dns.myhuaweicloud.com/v2/recordsets
 请求的header里加上X-Auth-Token,值就是复制的token
 响应里得到对应域名的zone id,recordsets id,project id
 因为这里获取的几个都是固定的不会变化,所以没写脚本里,自己手动获取一下。
 看自己有几个记录要更新就把下面这个复制几个,参数改下,我是有2个要更新。
 
 复制代码#将高速IP写入DNS
curl --location --request PUT 'https://dns.myhuaweicloud.com/v2/zones/这里填写zoneid/recordsets/这里填写recordsetid' \
--header 'X-Project-Id: 这里填写projectid' \
--header 'X-Auth-Token: '${Token}'' \
--header 'Content-Type: application/json' \
--data '{
    "records": [
        "'${BESTIP}'"
    ]
}'
 正确跑完的话,华为云后台记录应该能看见被更新。
 
 我自己是放padavan的路由器里,用ssh连把sh传上去,写个crontab,每天隔几个小时自动跑一遍。
 
 可以配合workers更新cf自选ip。本人成功救起vir一支。
 | 
 |