找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10168|回复: 11

[脚本] 抛砖引玉

[复制链接]
发表于 2011-9-7 16:38:31 | 显示全部楼层 |阅读模式

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

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

×
小区网络:
      解决内网二级路由思路:
      1.内网建PPPOE,PPPOE规则设置两个,采用不同限速策略;
      2.经测试发现,内网采用二级路由上网的用户,在/ppp active 中encoding为空;
      3.利用脚本,凡发现在/ppp active 中encoding为空者启用特殊限速;
      4.以下脚本在ros4.17中测试通过,但在ROS3.22中测试不通过,显示语法错误,不知何故?
:foreach i in=[/ppp active find encoding=""] do={
:local ppnam1 [/ppp active get $i name];
:local ppprof1
:set ppprof1 [/ppp secret get $ppnam1 profile]
if ($ppprof1="adsl1") do={
/ppp secret set [/ppp secret find name=$ppnam1] profile="limad1";
/ppp active remove [/ppp active find name=$ppnam1]
    }
  }
}

评分

参与人数 2铜板 -17 收起 理由
mxso -18 文不对题!
bobwalker + 1 刚实测了一下,我的XP拨上去encoding也是空.

查看全部评分

routeros
发表于 2011-9-7 17:23:02 | 显示全部楼层
本帖最后由 47771885 于 2011-9-7 17:24 编辑
  1. {
  2. /ppp active
  3. :local ppname ""
  4. :local ppprof "D2M"
  5. :foreach i in [find encoding=""] do={
  6. :set ppname [get $i name]
  7. /ppp secret set [/ppp secret find name=$ppname profile!=$ppprof] profile=$ppprof
  8. /ppp active remove $i
  9. }
  10. }
复制代码
看着修改测试下吧
注意 :local ppprof "D2M" 要为真
routeros
回复

使用道具 举报

 楼主| 发表于 2011-9-7 21:37:38 | 显示全部楼层
高手,多谢指导!
1.如果未接路由的pppoe规则名为adsl1,adsl2-------adsl5,如使用路由则对应将规则改为limad1,limad2-------limad5,如何用脚本实现?
2.如果使用二级路由的用户改回用单机拨号上网,encoding将不为空,这时可不可以用脚本即时将限制规则limad1,limad2-------limad5改回为正常规则adsl1,adsl2-------adsl5呢?
routeros
回复

使用道具 举报

 楼主| 发表于 2011-9-7 22:04:59 | 显示全部楼层
{
/ppp active
:local ppname1 ""
:foreach pp1 in [find encoding=""] do={
:set ppname1 [get $pp1 name]
:local ppname2 ""
:foreach pp2 in [find encoding!=""] do={
:set ppname2 [get $pp2 name]
:local pi "5"
:for pii from=1 to=$pi do={
/ppp secret set [/ppp secret find name=$ppname1 profile=("adsl".$pii)] profile=("limad".$pii)
/ppp active remove $pp1
/ppp secret set [/ppp secret find name=$ppname2 profile=("limad".$pii)] profile=("adsl".$pii)
/ppp active remove $pp2
}
}
}

以上脚本在ros3.22中没有执行,请高手看看
routeros
回复

使用道具 举报

 楼主| 发表于 2011-9-8 15:08:19 | 显示全部楼层
以下脚本在ros4.17测试通过,但在ros3.22测试显示语法错误,不知何故

:foreach pp1 in=[/ppp active find encoding=""] do={
:local ppnam1 [/ppp active get $pp1 name];
:local ppprof1
:set ppprof1 [/ppp secret get [/ppp secret find name=$ppnam1] profile]
:foreach pp2 in=[/ppp active find encoding!=""] do={
:local ppnam2 [/ppp active get $pp2 name];
:local ppprof2
:set ppprof2 [/ppp secret get [/ppp secret find name=$ppnam2] profile]
:local pi "5"
:for pii from=1 to=$pi do={
if ($ppprof1=("adsl".$pii)) do={
/ppp secret set [/ppp secret find name=$ppnam1] profile=("limad".$pii);
/ppp active remove [/ppp active find name=$ppnam1]}
if ($ppprof2=("limad".$pii)) do={
/ppp secret set [/ppp secret find name=$ppnam2] profile=("adsl".$pii);
/ppp active remove [/ppp active find name=$ppnam2]}
    }
  }
}
}
routeros
回复

使用道具 举报

 楼主| 发表于 2011-9-8 23:49:39 | 显示全部楼层
期待高手回帖
routeros
回复

使用道具 举报

发表于 2011-9-9 00:38:19 | 显示全部楼层
本帖最后由 47771885 于 2011-9-9 00:39 编辑

没完没了了,楼主自己研究研究现
routeros
回复

使用道具 举报

发表于 2011-9-9 00:42:30 | 显示全部楼层
routeros
回复

使用道具 举报

 楼主| 发表于 2011-9-9 15:22:03 | 显示全部楼层
测试一个上午,终于搞定
routeros
回复

使用道具 举报

发表于 2011-9-9 21:47:24 | 显示全部楼层
请将标题修改
routeros
回复

使用道具 举报

发表于 2011-9-21 22:04:54 | 显示全部楼层
我的ppp-active里面的encoding项根本什么都没有,我确定我的用户没有使用路由器的,因为我使用了客户端。上图:
ppp-acti.jpg
routeros
回复

使用道具 举报

发表于 2011-9-21 22:28:07 | 显示全部楼层
怀疑是内网经过VLAN后会这样,没有经过VLAN的没有测试。
另外,经过VLAN后,使用WINBOX无法使用MAC找到ROS。可能和这个一个道理。
是否正确不敢说,仅仅是怀疑
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 13:45 , Processed in 0.114361 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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