一个“反人类”解析记录变更需求的实现
in 代码片段技巧 with 7 comments

一个“反人类”解析记录变更需求的实现

in 代码片段技巧 with 7 comments

需求

说是“反人类”其实有点标题党了,那么这里列一下具体的需求吧

由于上面最后两点的原因,所以还要做的一个就是

最后就是:
域名的A记录只指向一个IP,也就是说只有一台服务器对外工作。
当前域名指向的IP所在的服务器一旦发生故障,需要及时更新A记录到另外的线路节点上去。

当然,最坏的情况就是非大陆的服务器全部故障了,还是要把线路切换到某云上来。
还有,切到某云后要在一定时间后再次切换线路出去。

听着可能有点一头雾水的样子....说白了就是要实时根据连接好坏,如果连接情况差就自动切换线路。

那么就用shell写一个吧。

简要说明

依赖服务

目标

实现

TIME_INTERVAL()
函数对上次更新解析记录做间隔判断,切换到最稳定线路后至少1小时后方可再更新解析记录。
TIME_OUT()
函数对监控的服务器进行超时检测,当连续3次超过7秒没有收到其回应认定访问超时。
UPDATE_DNS_1()
脚本

curl -X PUT "https://api.cloudflare.com/client/v4/zones/462fcdeaab0f3e9c4d90d5c06c722dee/dns_records/a2ac6dbb488378c116e4c12989c02b20" \
-H "X-Auth-Email: 0@lvmoo.com" \
-H "X-Auth-Key: dc70e6beb51a4947bbc2fb7c5312701a26da3" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"lvmoo.com","content":"3.3.3.3","ttl":1,"proxied":false}

作用:用于更新解析记录
可以参照Cloudflare官方API进行设置。
脚本

curl https://pushbear.ftqq.com/sub --data 'sendkey=3920-fec0e0ffc173ae055c227f65c3748a08&text='$text2'&desp='$desp2''  --compressed

作用:微信通知

举个栗子

我把代码贴到Github

总之,不会再有人会遇到这样的需求吧😓

--EOF--

Responses
  1. key🙄

    Reply
  2. 各种key那么逼真吓得我还以为你没删 →_→

    Reply
    1. Kay
      @小霖

      你是不是还真的执行了一遍

      Reply
  3. 动图很棒o(////▽////)q

    Reply
    1. Kay
      @香菇

      方糖自个画的,我只是一个搬运工~

      Reply
  4. 标题让我误解了 原来是这样∠( ᐛ 」∠)_

    Reply
    1. Kay
      @夏目贵志

      哈哈哈哈哈哈 我自己读起来都很绕⌇●﹏●⌇

      Reply