立即注册  找回密码
 立即注册
CeraNetworksBGVM服务器主机交流会员请立即修改密码Sharktech防护
查看: 30|回复: 2

路由器脚本自动更新华为云dnsIP 用CloudflareST测速

[复制链接]

路由器脚本自动更新华为云dnsIP 用CloudflareST测速

[复制链接]

3

主题

9

回帖

45

积分

新手上路

积分
45
ggf33221

3

主题

9

回帖

45

积分

新手上路

积分
45
2021-12-21 19:55:43 | 显示全部楼层 |阅读模式
看到有自动更新华为云dns的需求,正好自己写了个sh在用,这里把我的方法分享出来。
因为想放路由器的linux里跑所以现学的shell,大多都是东拼西凑,大佬见笑。

先新建个xxx.sh文件,记得权限加一下
[ol]
  • chmod +x xxx.sh[/ol]复制代码

    CloudflareST自己下对应系统的版本吧,这里就不赘述了,解压放在和sh文件同级目录。
    [ol]
  • #!/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}')
  • [/ol]复制代码

    发现有时会测到速度全是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,就放个文件读一下,如果有知道的麻烦教下,谢谢。

    [ol]
  • 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 复制代码

    这里要通过token获取一些其他的数据 先打开header_temp把自己的token复制一下
    然后打开Postman软件
    Get方式https://dns.myhuaweicloud.com/v2/recordsets
    请求的header里加上X-Auth-Token,值就是复制的token
    响应里得到对应域名的zone id,recordsets id,project id
    因为这里获取的几个都是固定的不会变化,所以没写脚本里,自己手动获取一下。
    看自己有几个记录要更新就把下面这个复制几个,参数改下,我是有2个要更新。
    [ol]
  • #将高速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}'"
  •     ]
  • }'[/ol]复制代码

    正确跑完的话,华为云后台记录应该能看见被更新。

    我自己是放padavan的路由器里,用ssh连把sh传上去,写个crontab,每天隔几个小时自动跑一遍。

    可以配合workers更新cf自选ip。本人成功救起vir一支。
  • 回复

    使用道具 举报

    32

    主题

    1万

    回帖

    2万

    积分

    论坛元老

    积分
    23230
    optimism

    32

    主题

    1万

    回帖

    2万

    积分

    论坛元老

    积分
    23230
    2021-12-21 19:56:25 | 显示全部楼层
    顶一顶
    回复

    使用道具 举报

    44

    主题

    178

    回帖

    710

    积分

    高级会员

    积分
    710
    long72288

    44

    主题

    178

    回帖

    710

    积分

    高级会员

    积分
    710
    2021-12-21 20:19:13 | 显示全部楼层
    感谢,成功更新ip了,recordsets 直接在浏览器f12看,postman我查到的不全
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-11-23 13:39 , Processed in 0.054631 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表