ROS下全自動多ADSL and DDNSupdate動態(tài)域名腳本
ROS 下全自動多ADSL and DDNSupdate動態(tài)域名腳本------------------------------------------------------------------
ROS 下全自動多ADSL and DDNSupdate動態(tài)域名腳本
--------------------------------------------------------------------------------
時間:2007-7-21 6:43:08 來源:中國軟路由網(wǎng)吧應(yīng)用技術(shù)網(wǎng) 作者:轉(zhuǎn)貼 閱讀750次
#Script ADSL install 以下為本ADSL 接入腳本安裝部分
#本方法用循環(huán)的方法實現(xiàn), 安裝比上次發(fā)的方便得多
#本腳本實現(xiàn)的功能為多ADSL 接入, 每條ADSL 在路由表里做了路由標記
#接入后的用法請大家自行解決
#請將以下代碼粘貼到你ROS 的Terminal 中或者將本文件導入ROS
#然后在system script下打開名為adsl-set 的腳本, 按照說明進行設(shè)置
#設(shè)置好后執(zhí)行adsl-set 腳本即可
/system script add name="adsl-set" source={
#以下為初始設(shè)置腳本, 請務(wù)必按照說明進行設(shè)置, 設(shè)好后運行本腳本
#在下面定義ADSL 接入的數(shù)量
: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 上線以后的動作, 比如策略路由更改啟停,動態(tài)域名更新等等
#下面一條是調(diào)用我的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 的動態(tài)域名更新服務(wù)的腳本,用之前請自行到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")}
}
}
}
}
}