找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 45576|回复: 105

[脚本] [原创]我的ROS下全自动多ADSL and DDNSupdate动态域名脚本

[复制链接]
发表于 2007-5-12 23:21:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
花了一个下午写好并调试好的利用循环实现的多ADSL接入+DDNS动态域名更新脚本,基本上比较完善,虽然看上去内容比较多,有点复杂,那是因为尽量考虑了各种意外错误情况的自动处理,但安装还是比较简单的,欢迎大家使用测试. 可以应付ADSL动态IP、动态网关、网关相同/不同等情况的接入~
利用循环实现,内容及说明如下:

#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")}
      }
    }
  }
}
}

[ 本帖最后由 louyc 于 2007-5-13 10:39 编辑 ]
routeros
发表于 2007-5-13 11:40:52 | 显示全部楼层
写得好复杂的脚本。冗余了。
routeros
回复

使用道具 举报

 楼主| 发表于 2007-5-13 13:05:39 | 显示全部楼层

哪里冗余?请指教~就是DDNS的为了确保不出错写得复杂了点,因为碰到了意外情况的问题要解决~

[ 本帖最后由 louyc 于 2007-5-13 13:59 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-5-14 12:52:06 | 显示全部楼层
能用就好了,也没必要刻意去精简脚本,又不是程序员。
routeros
回复

使用道具 举报

发表于 2007-5-14 13:10:38 | 显示全部楼层
不错,共享的精神值得赞扬,比起有些光说不练的人强多了,人家还指着那点儿东西挣钱呢!
routeros
回复

使用道具 举报

 楼主| 发表于 2007-5-14 13:20:13 | 显示全部楼层
原帖由 zooyo 于 2007-5-14 12:52 发表
能用就好了,也没必要刻意去精简脚本,又不是程序员。

要写东西了当然要考虑周全~
routeros
回复

使用道具 举报

发表于 2007-5-14 13:54:01 | 显示全部楼层
louyc  很不错了,能总结前辈们的脚本进行了改良。。。并共享。。
拱一下。。。
routeros
回复

使用道具 举报

发表于 2007-5-14 13:56:24 | 显示全部楼层
支持一个,多几个这样的人,这里就活了
routeros
回复

使用道具 举报

发表于 2007-5-14 14:47:29 | 显示全部楼层
原帖由 lrdadmin 于 2007-5-14 13:10 发表
不错,共享的精神值得赞扬,比起有些光说不练的人强多了,人家还指着那点儿东西挣钱呢!





听着这些话怎么老带刺啊?发现论坛一个很普遍的现象,这些东西其实都是老生常谈了,发过很多帖子,精华区也有,但是大家不喜欢去挖掘去品味,总是希望有人把现成的东西递到嘴边,然后自己轻轻的张嘴。那不好意思,运用商业目的咱们就得收费!顺带再说句,谁也没指望靠这个收费,小可不才,刚开了两家网城,暂时还能糊口,就不劳大家担心了。

[ 本帖最后由 zooyo 于 2007-5-14 20:45 编辑 ]
routeros
回复

使用道具 举报

 楼主| 发表于 2007-5-14 18:46:42 | 显示全部楼层
虽然是老生常谈的东西~但谈就要谈出个精品,谈出更好的解决方法~而不是漫不经心的附和~俗话说长江后浪推前浪嘛~
本脚本可以无限制不挂名任意转载使用和修改,只是改了最好能让我知道,让我学习学习~希望一浪更比一浪高~~

[ 本帖最后由 louyc 于 2007-5-14 18:50 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-5-14 20:43:25 | 显示全部楼层
难得有个人出来整理啊

并不是随手拿到就用,入门有先后,术业有专攻
版主未免太小气了点吧
routeros
回复

使用道具 举报

发表于 2007-5-14 22:29:12 | 显示全部楼层
学习中,,,
做记号
routeros
回复

使用道具 举报

发表于 2007-5-15 14:14:39 | 显示全部楼层
支持楼主的共享精神

论坛里的几个版主 都是想挣钱的

routeros
回复

使用道具 举报

发表于 2007-5-15 23:23:58 | 显示全部楼层
...须然不是很懂.....但要顶!!!
routeros
回复

使用道具 举报

发表于 2007-5-16 11:10:54 | 显示全部楼层
支持一下!楼主
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-25 07:26 , Processed in 0.063914 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表