ddnspod php 脚本_RouterOS原生脚本实现DNSPOD的DDNS动态解析

我前面有文章《RouterOS利用DNSPOD的API接口实现DDNS动态解析》写过通过PHP服务器更新DNSPOD解析的域名IP,但是更多的是带来安全问题,所有这次写了一个RouterOS(以下简称ROS)的原生脚本来实现域名的动态解析。

脚本说明:

1. 不存在的记录,不会自动添加,需要手动在DNSPOD添加记录,线路为默认,不支持单记录多线路解析。

2. 只支持IPv4,不支持IPv6

3. 脚本中需要自己修改的信息

pppoe,拨号连接的名称,如pppoe-out1

token,dnspod的token。id和token之间用半角逗号连接(英文状态下的逗号)

domain,域名

subdomain,主机记录

版本更新:

1.0 betaby 2019/11/13

1. 测试版本,有任何问题请留言。

2. 为什么不加自动了添加域名之类的,因为一次添加永久有效,所以脚本中不添加自动了。节省ROS性能(我懒)

脚本代码:

#PPPoE

:local pppoe "ADSL-PPPoE"

#DNSPOD token

:local token "xxxxx,xxxxxxxxxxxxxxxxxxx"

#域名

:local domain "myxzy.com"

#域名主机名

:local subdomain "www"

#以下不是专业人士请不要修改

#domain

:local dname ($subdomain.".".$domain)

#获取pppoe拨号ip

:local ipaddr [/ip address get [/ip address find interface=$pppoe] address]

:set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)]

#获取域名列表

:local record [/tool fetch url="https://dnsapi.cn/Record.List" http-data="login_token=$token&format=json&domain=$domain&sub_domain=$subdomain&record_type=A" as-value output=user]

#获取id和ip

:set record ($record->"data")

:set record [:pick $record [:find $record "\"records\":"] [:len $record]]

:local recordid [:pick $record ([:find $record "\"id\":\""]+6) [:find $record "\",\"ttl"]]

:local recordip [:pick $record ([:find $record "\"value\":\""]+9) [:find $record "\",\"en"]]

#更新ip地址

:if ($recordip!=$ipaddr) do={

/tool fetch url="https://dnsapi.cn/Record.Ddns" http-data="login_token=$token&format=json&domain=$domain&sub_domain=$subdomain&record_id=$recordid&record_line_id=0&value=$ipaddr"

:log info ("[".$dname."] ip update")

} else={

:log info ("[".$dname."] ip not update")

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值