• 利用api更新域名解析ip+端口转发【1】


    利用api更新域名解析ip+端口转发

      一看标题就知道有两个需求啦~~~如果大家看完这文章还是很懵逼的话,没关系,因为我有录视频,还有无比详细的word文档!只要不是智力有缺陷的,绝对绝对能看懂滴。(当时搞这玩意的时候,老板叫我录视频,据说是为了教他的朋友,所以我不仅要让有开发基础的老板看懂,还要让外行人也能明白;反正交差之后他们没用反馈没看懂的,哈哈哈~~)

     

    一、需求一及问题解决

    需求一:api更新域名解析:

      话说有个网站:https://www.cheapnat.com/,老板在上面买了两台FQ机器用来给我们查资料的,如下图(老实说,能FQ查阅资料我觉得是公司一个非常非常好的福利,很多歪果仁帮助我解决N多问题)。然后有另外一个网站:name.com,上面是配置域名解析的。

      【i】cheapnat.com:

       【ii】name.com:

    主机大家顺着来看,看成是这样(不然后面不好说)

    a.ljy.xyz    4xxx.142

    b.ljy.xyz    210.6.179.203

    整个流程及需求如下:

    就是name.com 能探测 cheapnat.com 上公网ip变了,自动更新相应的域名解析。

    问题解决:

      利用网站:name.com的api文档实现域名解析自动更新

      具体如下:

      申请api的文档的首页文档:https://www.name.com/zh-cn/support/articles/360007597874-Signing-up-for-API-access

      大致意思是,叫你创建一个api 的 token,然后按部就班进行一系列操作。。。

      具体修改dns解析的api文档:https://www.name.com/api-docs     (这个就很重要啦,必须得学懂,不然没法继续下去)

    找到左边菜单栏“UpdateRecord” ,看到是通过curl去更新dns解析的,传过去的参数需要 id 这个参数,所以问题解决首先要获取id的值,然后再curl拼接请求修改数据。

      1、获取更新记录的请求参数id

    如何获得这个id?

    第一步:先申请api,获得api token,网页上叫这个玩意是令牌,而且我们需要的是生产的令牌,而不是测试的令牌(这个有点坑爹)

    第二步:获取id

    参考文档:https://www.name.com/api-docs/DNS#ListRecords

    请求示例是这样的:GET /v4/domains/{domainName}/records。我这里curl获取id是这样的(注意:domainName填的是根域名):

    curl -u 'namecom的用户登录名:上面截图的生产令牌' 'https://api.name.com/v4/domains/ljy.xyz/records'

    请求之后返回信息就会有id这列了。然后用在线json格式转换:

    http://www.bejson.com/#

     

    2、手动拼接请求,尝试修改数据

    参考文档:https://www.name.com/api-docs/DNS#UpdateRecord

    先手动测试是否能修改name.com网站上的dns解析,假设我要修改b.ljy.xyz的dns记录(也就是下面host的值为“b”):

    curl -u 'namecom的用户登录名:上面截图的生产令牌' 'https://api.name.com/v4/domains/ljy.xyz/records/1873892959' -X PUT --data '{"host":"b","fqdn":"ljy.xyz","type":"A","answer":"1.1.1.1","ttl":300}'

    发现name.com上dns解析改了:

    3、脚本自动拼接请求,定时修改dns解析

    所以思路就是,把curl上,answer传过去的参数写成一个变量,就可以修改dns记录了!!!

    curl -u 'namecom的用户登录名:上面截图的生产令牌' 'https://api.name.com/v4/domains/ljy.xyz/records/1873892959' -X PUT --data '{"host":"b","fqdn":"ljy.xyz","type":"A","answer":"'$myip'","ttl":300}'

    我们判断的依据是:cheapnat.com 上ip更新了,才修改name.com上的dns记录,所以需要跟以前旧的ip进行对比,相同就不更新了,这个要在cheapnat的机器上写脚本,因为要获取本机公网ip(就是两台FQ的机器啦,可以登录的)

    回到这个图:

    写入到脚本,定时检测FQ服务器ip是否更新

    是 ——》name.com 更新dns解析

    否 ——》直接退出定时任务脚本,

    1 myip=$(curl -s "ifconfig.me")  #获取当前公网ip
    2 oldip=$(cat myip)     #拿到上一次执行脚本时,写入到文件上的旧出口:ip
    3 
    4 if [[ $oldip == $myip ]];then   #如果跟旧ip相同,则退出整个定时脚本
    5     echo 'the same ip'
    6     exit 0
    7 fi

    否则更新域名解析(我这里举例是修改host为b的记录):

    curl -u 'namecom的用户登录名:上面截图的生产令牌' 'https://api.name.com/v4/domains/ljy.xyz/records/1873892959' -X PUT --data '{"host":"b","fqdn":"ljy.xyz","type":"A","answer":"'$myip'","ttl":300}'

    1
    echo $myip > myip #重新写回到文件,充当下次脚本执行的旧ip

    二、需求二及问题解决(博客太长了,请看:利用api更新域名解析ip+端口转发【2】)

  • 相关阅读:
    python-函数进阶
    SHELL wordpress.sh
    XFS: possible memory allocation deadlock in kmem_alloc (mode:0x2d0)
    Puppet install with nginx unicorn
    CentOS 6内核编译问题整理
    Openstack 本地yum源配置
    Openstack 本地yum源配置
    hpsa 0000:0a:00.0: out of memory
    openstack VNC安全问题
    CentOS下crash分析内核kdump文件方法
  • 原文地址:https://www.cnblogs.com/windysai/p/14382980.html
Copyright © 2020-2023  润新知