找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3583|回复: 13

[脚本] 多条动态ADSL接入控制脚本---脚本的风采

[复制链接]
发表于 2007-6-13 18:54:41 | 显示全部楼层 |阅读模式

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

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

×
谁能帮忙注释一下这脚本,如果是变量用其它颜色更好

脚本如下:
:local assign-address
:local new-address
:local status
:local x
:set x 2
:for i from=1 to=$x do={
    :set status [/interface get [/interface find  name=("pppoe-out" . $i)] running]
    :if ($status=true) do={
     :set new-address [/ip address get [/ip address find dynamic=yes interface=("pppoe-out" . $i)] address]
     :set new-address [:pick $new-address 0 ([:len $new-address] -3)]
     :set assign-address [/ip address get [/ip address find dynamic=no interface=("pppoe-out" . $i)] address]
     :set assign-address [:pick $assign-address 0 ([:len $assign-address] -3)]
        :if ($assign-address != $new-address) do={ \
        /ip address set [/ip address find comment=$i] address=$new-address network=$new-address broadcast=$new-address
        /ip route set [/ip route find comment=$i] gateway=$new-address
       }
   }
}

[ 本帖最后由 cracks 于 2007-11-4 12:37 编辑 ]
routeros
发表于 2007-6-13 19:06:40 | 显示全部楼层
这个脚本是我写的,测试过可用,你看看吧

:local ip1
:local ip2
:local x
:set x 2    (这里的数字2是代表多少条动态ADSL接入)
:for i from=1 to=$x do={       (这里是循环执行)
     :set ip1 [/ip address get [/ip address find dynamic=yes  interface=("pppoe-out" . $i)] address]
     :set ip1 [:pick $ip1 0 [:find $ip1 "/"]]
     :set ip2 [/ip route get [/ip route find comm=$i] gateway]
     :if ($ip1 != $ip2) do={       (这里是条件选择,$ip1不等于$ip2时,执行do={}里面的命令)
      /ip add set [/ip add find comm=$i] address=$ip1 network=$ip1 broa=$ip1
      /ip route set [/ip route find comm=$i] gateway=$ip1
     :log info "〖动态或同网关ADSL修改完毕〗"
  }
}

[ 本帖最后由 sxmong147 于 2007-6-13 20:06 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-6-14 00:19:16 | 显示全部楼层
如果pppoe-out1掉线,不是执行不下去了???
routeros
回复

使用道具 举报

发表于 2007-6-14 00:57:09 | 显示全部楼层
routeros
回复

使用道具 举报

 楼主| 发表于 2007-6-14 02:07:11 | 显示全部楼层
在这里是靠什么判断的呢,,如果pppoe-out改名了呢,

要不要在那里做comment注释的呢
routeros
回复

使用道具 举报

发表于 2007-6-14 02:09:30 | 显示全部楼层
不会吧,如果pppoe-out1掉线,执行到
:set ip1 [/ip address get [/ip address find dynamic=yes  interface=("pppoe-out" . $i)] address]
脚本就会跳出
如果pppoe-out1一直拨不上
其他的ad也更新不了
routeros
回复

使用道具 举报

发表于 2007-6-14 03:08:21 | 显示全部楼层
原帖由 tpy372 于 2007-6-14 02:09 发表
不会吧,如果pppoe-out1掉线,执行到
:set ip1 [/ip address get [/ip address find dynamic=yes  interface=("pppoe-out" . $i)] address]
脚本就会跳出
如果pppoe-out1一直拨不上
其他的ad也更新不了



      你测试下就知道了
routeros
回复

使用道具 举报

发表于 2007-6-14 04:53:21 | 显示全部楼层
测试通过...
以前调试脚本发现ros的脚本容易出错后跳出,这次为什么又能通过????不明白????
routeros
回复

使用道具 举报

发表于 2007-6-14 05:29:48 | 显示全部楼层
还有,如果出错,会不停的修改address 和gateway
routeros
回复

使用道具 举报

发表于 2007-6-14 05:56:08 | 显示全部楼层
原帖由 tpy372 于 2007-6-14 05:29 发表
还有,如果出错,会不停的修改address 和gateway



那可能是你没加上条件选择吧?

  或你是没去掉掩码

[ 本帖最后由 sxmong147 于 2007-6-14 06:16 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-6-14 16:58:46 | 显示全部楼层
你试一下。。。
如果某条ad拨不上,每次运行脚本仍然会去修改他的address 和gateway,在系统log里会有显示..
虽然看上去address和gateway都是空
routeros
回复

使用道具 举报

 楼主| 发表于 2007-6-14 18:57:31 | 显示全部楼层
在这里是靠什么判断的呢,,如果pppoe-out改名了呢,

要不要在那里做comment注释的呢
routeros
回复

使用道具 举报

发表于 2007-6-14 19:13:09 | 显示全部楼层
你是没学过言语,由其是C
全局变量 :local
下面的附值。
再一个C语言我是没办法一下下教你了。
语句就是 C语言的循环。
能看明白的挑下。呵。
routeros
回复

使用道具 举报

发表于 2007-11-4 12:36:37 | 显示全部楼层
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 11:49 , Processed in 0.066728 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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