ROS下全自动多ADSL and DDNSupdate动态域名脚本

ROS 下全自动多ADSL and DDNSupdate动态域名脚本------------------------------------------------------------------

ROS 下全自动多ADSL and DDNSupdate动态域名脚本

--------------------------------------------------------------------------------

时间:2007-7-21 6:43:08 来源:中国软路由网吧应用技术网 作者:转贴 阅读750次

#Script ADSL install 以下为本ADSL 接入脚本安装部分

#本方法用循环的方法实现, 安装比上次发的方便得多

#本脚本实现的功能为多ADSL 接入, 每条ADSL 在路由表里做了路由标记

#接入后的用法请大家自行解决

#请将以下代码粘贴到你ROS 的Terminal 中或者将本文件导入ROS

#然后在system script下打开名为adsl-set 的脚本, 按照说明进行设置

#设置好后执行adsl-set 脚本即可

/system script add name="adsl-set" source={

#以下为初始设置脚本, 请务必按照说明进行设置, 设好后运行本脚本

#在下面定义ADSL 接入的数量

:global x 3

#在下面定义ADSL 接口名前缀

:global pppoe-name pppoe-out

:for i from=1 to=$x do={

/ip address add address=("1.1.1." . $i . "/32") interface=($pppoe-name . $i) comment=("adsl" . $i)

/ip route add gateway=("1.1.1." . $i) routing-mark=("c" . $i) comment=("adsl" . $i)

}

/system scheduler enable adsl

/system script remove adsl-set

}

#----------------------------------#

/system scheduler add name=adsl disabled=yes comment=adsl interval=20s on-event={ #ADSL接入脚本开始

:for i from=1 to=$x do={

/interface pppoe-client monitor ($pppoe-name . $i) once do={:global adsl-statu $status}

:if ($adsl-statu="connected") do={

:global adsl-ip-d [/ip address get [/ip address find interface=($pppoe-name . $i) dynamic=yes] address]

:global adsl-ip-n [/ip address get [/ip address find comment=("adsl" . $i)] address]

,

:global adsl-ip [:pick $adsl-ip-d 0 [:find $adsl-ip-d "/">

:if ($adsl-ip-n != $adsl-ip-d) do={

/ip address set [/ip address find comment=("adsl" . $i) interface=($pppoe-name . $i) dynamic=no] address=$adsl-ip-d network=$adsl-ip broadcast=$adsl-ip disabled=no /ip route set [/ip route find comment=("adsl" . $i)] gateway=$adsl-ip

#这里写ADSL 上线以后的动作, 比如策略路由更改启停,动态域名更新等等

#下面一条是调用我的DDNS 更新脚本, 不需要的可以删掉

/system script run ddnsUpdate

}

} else={#这里写ADSL 掉线后的动作}

}

}

#Script ADSL uninstall

/system script add name="adsl-scr-unins" source={

#以下为本ADSL 接入脚本卸载部分

/system scheduler remove adsl

:for i from=1 to=$x do={

/ip address remove ("adsl" . $i)

/ip route remove ("adsl" . $i)

}

/system script remove adsl-scr-unins

}

以下为使用changeIP 的动态域名更新服务的脚本,用之前请自行到www.changeip.com 去申请帐号~

#Script DNSupdate install

#以下为DDNS 更新脚本

/system script add name="ddnsUpdate" source={

#ChangeIP的注册用户名

:global u "username"

#ChangeIP的注册密码

:global p "password"

#ChangeIP的子域名前缀

:global m "A record name"

#ChangeIP的域

:global z "Domain"

:for j from=1 to=$x do={

/interface pppoe-client monitor ($pppoe-name . $j) once do={:global adsl-statu $status}

,

:if ($adsl-statu="connected") do={

:log info ("ddnsUpdate: ADSL" . $j . " ddnsUpdate process start !")

:global ddns-ip-d [/ip address get [/ip address find interface=($pppoe-name . $j) dynamic=yes] address]

:global ddns-ip [:pick $ddns-ip-d 0 [:find $ddns-ip-d "/">

:global n ($m . $j)

:global k 0;:while($k<1) do={

:global res-ip [:resolve ($n . "." . $z)]

:if (($res-ip) != (0.0.0.0)) do={

:if (($res-ip) != $ddns-ip) do={

:log info ("ddnsUpdate: ADSL" . $j . " IP Address is " . $ddns-ip . " sending update")

/tool dns-update name=$n zone=$z address=$ddns-ip key-name=$u key=$p :delay 60} else={:set k ($k 1);:log info ("ddnsUpdate: ADSL" . $j . " IP Address is " . $ddns-ip . " no change")}

}

}

}

}

}

标签: